Java Android应用程序停止工作

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 *

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

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