首页 > 解决方案 > 应用程序意外关闭 - Kotlin

问题描述

package com.example.firstapp

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.EditText
import kotlinx.android.synthetic.main.activity_main.*
import kotlin.random.Random

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)


        val deEditText = findViewById<EditText>(R.id.de) as EditText
        val ateEditText = findViewById<EditText>(R.id.ate) as EditText

        Randomize.setOnClickListener{
            val de = Integer.parseInt(deEditText.text.toString())
            val ate = Integer.parseInt(ateEditText.text.toString())

            RandomDisplay.text = (Random.nextInt(de - ate) + ate).toString()
        }
    }
}

我正在尝试创建一个获取两个值并在它们之间选择一个随机整数的应用程序。我不知道我做错了什么,我真的希望有人能帮助我。提前致谢。这是错误日志

标签: androidkotlin

解决方案


当 Rantdom.nextInt 参数为负时抛出异常

val deEditText = findViewById<EditText>(R.id.de) as EditText
val ateEditText = findViewById<EditText>(R.id.ate) as EditText

Random.nextInt(de - ate)

如果 deEditText 中的值减去 ateEditText 中的值为零或负数,则 Radom.nextInt 将抛出IllegalArgumentException

// minimize the end bound to 1 by adding max()
RandomDisplay.text = (Random.nextInt(max(1, de - ate)) + ate).toString()

推荐阅读