如何处理错误readJavaFormatString(FloatingDecimal.java:991)

时间:2014-04-30 11:55:43

标签: java

我正在尝试将字符串转换为Double,如:

Double no_of_leaves_form=Double.parseDouble(leaveapplyform.getNo_of_leaves());

和数据库中NO_of_leaves的数据类型是varchar。 但我收到以下错误:

 java.lang.NullPointerException
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:991)
    at java.lang.Double.parseDouble(Double.java:510)
    at com.dz.hrportal.worker.EmpLeaveApplyWorker.validateUser(EmpLeaveApplyWorker.java:42)
    at com.dz.hrportal.controller.EmpLeaveApplyController.processForm(EmpLeaveApplyController.java:63)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)

是否有人知道如何解决它。

5 个答案:

答案 0 :(得分:5)

当您尝试使用nullDouble解析为Double.parseDouble()时,会收到此异常。 getNo_of_leaves()方法似乎正在返回null,因此也是例外。

要么确保正确填充值,并且getNo_of_leaves()方法返回Double值的正确String表示形式(或)通过在它之前添加null检查来使解析成为条件。

Double no_of_leaves_form = 0.0; // default value
if(leaveapplyform.getNo_of_leaves() != null) {
    no_of_leaves_form = Double.parseDouble(leaveapplyform.getNo_of_leaves());
}

答案 1 :(得分:1)

在尝试解析leaveapplyform.getNo_of_leaves()之前添加空检查

检查leaveapplyform是否为null并且leaveapplyform.getNo_of_leaves()不为null

答案 2 :(得分:1)

我认为leaveapplyform.getNo_of_leaves()返回null,并且不能解析为Double。

答案 3 :(得分:0)

您可以尝试使用这样的条件检查:

Double no_of_leaves_form == null ?
 null : Double.parseDouble(leaveapplyform.getNo_of_leaves());

答案 4 :(得分:0)

捕获NullPointerException不会抛出Exception

try {
    Double no_of_leaves_form=Double.parseDouble(leaveapplyform.getNo_of_leaves());
}catch(NullPointerException e) {

}