debugging Kotlin应用程序在运行时立即崩溃

8fsztsew  于 2022-11-14  发布在  Kotlin
关注(0)|答案(2)|浏览(195)

我是一个编程新手,刚开始在Android Studio中用Kotlin编写代码。我正在尝试构建一个简单的“检查数字是偶数还是奇数”应用程序,但我不确定我错在哪里。
当我在模拟器上启动应用程序时,它会立即崩溃。

class MainActivity : AppCompatActivity() {
    private lateinit var enternumber : EditText
    private lateinit var button: Button
    private lateinit var output: TextView
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        enternumber = findViewById(R.id.et_number)
        button = findViewById(R.id.btn_click)
        output = findViewById(R.id.tv_output)
        val enternum: Int = enternumber.text.toString().toInt()

        button.setOnClickListener {
            if (enternum % 2 == 0)
                output.text = ("Number is even")
            else
                output.text = ("Number is odd")
        }
    }
}

任何帮助都是非常感谢的。

qjp7pelc

qjp7pelc1#

首先,学习使用logcat来获取对问题诊断有用的异常堆栈跟踪。Unfortunately MyApp has stopped. How can I solve this?
这里有一个问题是显而易见的。

val enternum: Int = enternumber.text.toString().toInt()

onCreate()阶段,edittext中没有内容,toInt()肯定会失败。单击时可能会有一个数字。

9lowa7mx

9lowa7mx2#

您的应用程序不断崩溃的原因是:瓦尔输入:Int =输入数字.文本.toString().toInt()
必须创建两个数值,一个显示为String,另一个在if语句中用作Int,并与String组合。
下面是一些代码,它们可以完成你要做的事情。我把它们放在一个函数中,只是为了让它更可读:

class MainActivity : AppCompatActivity() {
private lateinit var enternumber: EditText
private lateinit var button: Button
private lateinit var output: TextView

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

    button = findViewById(R.id.btn_click)
    output = findViewById(R.id.tv_output)

    button.setOnClickListener {
        getEvenOrOdd()
    }

}

fun getEvenOrOdd() {
    enternumber = findViewById(R.id.et_number)
    val displayNumber = enternumber.text.toString()
    val newNum = displayNumber.toInt()
    val even = "Number is even"
    val odd = "Number is odd"
    if (newNum % 2 == 0) {
        output.text = even
    } else {
        output.text = odd
    }

}

}

相关问题