返回 Space 导致计算器崩溃

Back Space Causes Crash in Calculator

每当我在没有输入的情况下按下返回 Space 按钮时,Android 计算器应用程序就会崩溃。 此代码是用 Kotlin 编写的,IDE 是 Android Studio,BackSpace 在下面的代码中 MainActivity.kt 中标记为 tvBack。

我应该如何处理这个崩溃?

 //BACK
        tvBack.setOnClickListener{
            val string =tvResult.text.toString()
            val string2=tvExpression.text.toString()
            if(string.isEmpty()){
                tvExpression.text = string2.substring(0,string2.length-1)

            }else if(string2.isNotEmpty()){

                tvResult.text=""
            }else if(string2.isEmpty()){
                return@setOnClickListener
            }

问题出在这一行:

tvExpression.text = string2.substring(0,string2.length-1)

如果您的 string2 为空,string2.length 为 0,则此行的计算结果为

tvExpression.text = string2.substring(0,-1)

所以这是一个无效的子字符串。

因此在生成子字符串之前,您应该首先检查字符串是否不为空。您可以通过在 tvBack.setOnClickListener{ 之后添加以下行来执行此操作:

if (string2.length == 0) return;

// 编辑: 请将您的代码编辑为以下内容:

    tvBack.setOnClickListener{
        val string =tvResult.text.toString()
        val string2=tvExpression.text.toString()
        if(string2.isNotEmpty()){
            tvExpression.text = string2.substring(0,string2.length-1)
            tvResult.text=""
        }

你的新错误的问题是,你做错了检查。 如果字符串 not 为空,您只想生成和使用子字符串。你的代码做了相反的事情