我正在尝试将字符串转换为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)
是否有人知道如何解决它。
答案 0 :(得分:5)
当您尝试使用null
将Double
解析为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) {
}