发现尝试parseDouble的异常

时间:2016-06-14 16:18:52

标签: java android exception-handling

我正在尝试制作应用来计算CGPA。我用我的数字数据保存在Double变量类型中。

执行时,显示

  

java.lang.NumberFormatException:无效的double:""    我的logcat错误。

这段代码显示错误:

 total_credit = Double.parseDouble(ch1.getText().toString()) + 
        Double.parseDouble(ch2.getText().toString()) + 
        Double.parseDouble(ch3.getText().toString()) + 
        Double.parseDouble(ch4.getText().toString()) + 
        Double.parseDouble(ch5.getText().toString()) + 
        Double.parseDouble(ch6.getText().toString());

我试图将异常处理为:

try {
    total_credit = Double.parseDouble(...);
} catch (NumberFormatException e) {
    total_credit = 0.0;
}

现在执行时,错误发生在同一行,错误是:

  

ComponentInfo {com.example.aashish.cgpacalculator / com.example.aashish.cgpacalculator.calculator_page}:java.lang.NumberFormatException:无效的double:""

4 个答案:

答案 0 :(得分:1)

有些文字是空的。不可能说出哪一个。检查所有值:

  • ch1.getText()
  • ch2.getText()
  • ch3.getText()
  • ch4.getText()
  • ch5.getText()
  • ch6.getText()

答案 1 :(得分:1)

你有一个 java.lang.NumberFormatException ,并且正如消息所示,原因是你正在尝试解析或转换或者没有加倍的东西(在你的情况下是一个空字符串)

如何解决?

在进行任何转换之前,您始终可以验证窗口小部件是否持有空字符串

只是做

if (myString.isEmpty()) {

}

答案 2 :(得分:0)

if(ch1.getText().toString().trim().equalsIgnoreCase("") || ch2.getText().toString().trim().equalsIgnoreCase("") || ch3.getText().toString().trim().equalsIgnoreCase("") || ch4.getText().toString().trim().equalsIgnoreCase("") || ch5.getText().toString().trim().equalsIgnoreCase("") || ch6.getText().toString().trim().equalsIgnoreCase("") ){
    // empty String
    }
    else{
    try {
            double number1 = Double.parseDouble(ch1.getText().toString().trim());
            double number2 = Double.parseDouble(ch2.getText().toString().trim());
            double number3 = Double.parseDouble(ch3.getText().toString().trim());
            double number4 = Double.parseDouble(ch4.getText().toString().trim());
            double number5 = Double.parseDouble(ch5.getText().toString().trim());
            double number6 = Double.parseDouble(ch6.getText().toString().trim());

        double total_credit = number1 + number2 + number3 + number4 + number5 + number6;

    } catch (Exception e) {
            Toast.makeText(context, e.toString(), Toast.LENGTH_SHORT).show();
        }
}

答案 3 :(得分:0)

您需要检查每个控件ch1,ch2,ch3,ch4,ch5,ch6的文本是否为空。

您可以使用返回布尔值的TextUtils.isEmpty(ch1.getText())