Java计算器崩溃

时间:2018-11-14 22:02:18

标签: java

我正在制作这个非常酷的计算器应用程序。一切正常,除了一件事。当用户按下无效的方程式(例如1+或5)时,它将崩溃。我的意思是崩溃:抱歉,计算器已停止。我尝试修复它,但是没有用。

Java:

if (number1.getText().toString().contains("+")){
    String[] retVal;
    if (number1.getText().length() != 0) {
        //num1 = Float.parseFloat(num1 + "+");
        expr = number1.getText().toString();
        retVal = expr.split("\\+");
        if ((retVal[0].length() >= 2) || retVal[1].length() >= 2)
            return;
        num1 = Float.parseFloat(retVal[0]);
        num2 = Float.parseFloat(retVal[1]);
        resultnum = num1+num2;
        result.setText(String.valueOf(resultnum));
    }
    else {
        Toast.makeText(getApplicationContext(),"Please enter a valid math expression",Toast.LENGTH_SHORT).show();
        return;
    }

这是我在其中修复此问题的行:(但是,不起作用)

if ((retVal[0].length() >= 2) || retVal[1].length() >= 2)
    return;

我是Java编程的初学者。我正在使用Android Studio。

1 个答案:

答案 0 :(得分:2)

我猜是因为您没有包括确切的错误,但是如果您输入的是1+,那么

retVal = expr.split("\\+");

将返回一个字符串(不是两个),这意味着

 retVal[1].length()

将导致异常,因为retVal[1]不存在。

为避免此错误,应在调用retval后检查split(),以查看其是否包含两个元素。如果不是,则告诉您的用户他们的方程式无效。例如,

 if (retVal.length != 2) {
     // Tell the user ...
 }