我正在为课堂作业制作android计算器应用程序。当我先按加号(+/-)键然后输入任何数字键时;我的申请停止工作。但是,当我输入数字键,然后按加号按钮,它工作正常。
else if (v.getId() == R.id.plusminus){
Double newNumber = Double.parseDouble(textdisplay.getText().toString());
total = newNumber * (-1);
textdisplay.setText(total.toString());
}
答案 0 :(得分:1)
当您的应用崩溃时,您会在logcat中收到错误。如果您将这些问题和相关代码一起发布,那将非常有用。但是,在这里我很确定它是一个解析/错误检查问题
当我先按下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
}
}
答案 1 :(得分:0)
请检查textdisplay中的字符串是否为空。因为当String为空或不是数字时,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());
}
请在此处查看双重文档 LINK
Double.parseDouble(String s)
Throws:
NullPointerException - if the string is null
NumberFormatException - if the string does not contain a parsable double.
答案 2 :(得分:0)
这一行
Double newNumber = Double.parseDouble(textdisplay.getText().toString());
可能会抛出异常(NullPointer
或NumberFormat
),因此在尝试解析之前请检查textdisplay
的值。