【问题标题】:Exception found trying to parseDouble尝试 parseDouble 时发现异常
【发布时间】:2016-06-14 16:18:52
【问题描述】:

我正在尝试制作一个计算 CGPA 的应用程序。我已经使用我的数字数据保存在 Double 变量类型中。

执行时显示

java.lang.NumberFormatException:无效的双精度:“” 我的 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: Invalid double: ""

【问题讨论】:

  • 您确定在 catch 块之后无法读取 total_credit 的值吗?应用程序崩溃了吗?如果是,那么您也没有处理其他一些异常。

标签: java android exception-handling


【解决方案1】:

你得到一个 java.lang.NumberFormatException 并且正如消息所暗示的那样,原因是你试图解析或转换或加倍不是的东西(在你的情况下是一个空字符串)

如何解决?

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

只是做

if (myString.isEmpty()) {
    
}

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 刚刚发现我正在尝试从编辑文本中获取文本,然后再填充并使用它。在 onClick() 中提取文本后问题已解决。
      【解决方案4】:
      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();
              }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-16
        • 2014-07-11
        • 1970-01-01
        • 2018-04-30
        • 2021-09-01
        • 2017-07-08
        相关资源
        最近更新 更多