我正在制作这个非常酷的计算器应用程序。一切正常,除了一件事。当用户按下无效的方程式(例如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。
答案 0 :(得分:2)
我猜是因为您没有包括确切的错误,但是如果您输入的是1+
,那么
retVal = expr.split("\\+");
将返回一个字符串(不是两个),这意味着
retVal[1].length()
将导致异常,因为retVal[1]
不存在。
为避免此错误,应在调用retval
后检查split()
,以查看其是否包含两个元素。如果不是,则告诉您的用户他们的方程式无效。例如,
if (retVal.length != 2) {
// Tell the user ...
}