Android应用程序停止工作

时间:2014-03-10 18:40:14

标签: java android

我正在为课堂作业制作android计算器应用程序。当我先按加号(+/-)键然后输入任何数字键时;我的申请停止工作。但是,当我输入数字键,然后按加号按钮,它工作正常。

else if (v.getId() == R.id.plusminus){
        Double newNumber = Double.parseDouble(textdisplay.getText().toString());
            total = newNumber * (-1);
            textdisplay.setText(total.toString());

        }

3 个答案:

答案 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());  

可能会抛出异常(NullPointerNumberFormat),因此在尝试解析之前请检查textdisplay的值。