Java Android应用程序停止工作
我正在为课堂作业制作android计算器应用程序。当我先按plusminus(+/-)键,然后输入任何数字键时;我的应用程序停止工作。但当我输入数字键,然后按下plusminus按钮时,它工作正常Java Android应用程序停止工作,java,android,Java,Android,我正在为课堂作业制作android计算器应用程序。当我先按plusminus(+/-)键,然后输入任何数字键时;我的应用程序停止工作。但当我输入数字键,然后按下plusminus按钮时,它工作正常 else if (v.getId() == R.id.plusminus){ Double newNumber = Double.parseDouble(textdisplay.getText().toString()); total = newNumber *
else if (v.getId() == R.id.plusminus){
Double newNumber = Double.parseDouble(textdisplay.getText().toString());
total = newNumber * (-1);
textdisplay.setText(total.toString());
}
请检查textdisplay中的字符串是否为空。因为当字符串为空或不是数字时,Double.parseDouble将引发异常
else if (v.getId() == R.id.plusminus){
String number = textdisplay.getText().toString();
if(number == null) return; //exits function
if(number.equals("")) return; //exits function
//you could do more checks here
Double newNumber = Double.parseDouble(number);
total = newNumber * (-1);
textdisplay.setText(total.toString());
}
请也看看这里的双重文档
Double.parseDouble(字符串s)
当你的应用程序崩溃时,你会在日志中看到错误。如果你把这些和你的问题和相关代码一起发布,这将非常有帮助。然而,这里我很确定这是一个解析/错误检查问题 当我先按plusminus(+/-)键,然后输入任何数字键时;我的应用程序停止工作 当您按下此键时,您没有检查有效的输入,因此它试图解析空文本。您需要执行一些错误检查,例如
try/catch
,以检查无效输入。差不多
else if (v.getId() == R.id.plusminus){
try {
Double newNumber = Double.parseDouble(textdisplay.getText().toString());
total = newNumber * (-1);
textdisplay.setText(total.toString());
}
catch (NumberFormatException e) {
// maybe show some relevant message here with a Toast or something
// to let the user know invalid input was entered
}
}
这条线
Double newNumber = Double.parseDouble(textdisplay.getText().toString());
可能正在引发异常(无论是
NullPointer
还是NumberFormat
),因此请在尝试解析之前检查textdisplay
的值。什么是“停止工作”?它会强制关闭吗?你能发布一个日志吗?似乎你会得到一个空指针异常,这是因为你试图通过先按下按钮来访问不存在的值。是的,它会强制关闭。我认为捕获NPE通常是不好的形式。当我尝试上面的代码时,它不会强制关闭我的应用程序,这是件好事。但当先按plusminus键,然后输入数字时,它也不会显示任何符号。
Double newNumber = Double.parseDouble(textdisplay.getText().toString());