当我无输入时按退格按钮时,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="" 
        } 

您的新错误的问题是,您的检查错误。
如果字符串为 而不是为空,则只想生成和使用子字符串。您的代码则相反


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!