2011-05-24 66 views
-1

有人能解释我为什么在这里,我得到一个NullPointerException空指针异常双

String s = request.getParameter("tbExample"); 
    _tbExample = new Double (Double.valueOf(s).doubleValue()); 
+0

,所以我能做些什么来解决这个问题 – jack 2011-05-24 18:52:08

+1

此外,还有很少的新双(Double.valueOf(S).doubleValue())一个很好的理由;只需使用Double.valueOf(s) – 2011-05-24 18:55:57

+0

“request”是什么类型? 'getParameter()'有效的返回值是什么? – jwd 2011-05-24 18:57:40

回答

8

S可为空。根据javadoc,如果s为null,valueOf将抛出空指针异常。

+0

它应该被接受回答 – kiedysktos 2017-02-01 08:54:29

1

尝试检查s为空,然后继续。

可能是tbExample参数在您的请求中不存在。 因此返回null以指示该事实,并将其分配给s。然后传递给Double.valueOf,这是无效输入。

尝试这样:

String s = request.getParameter("tbExample"); 
if(s == null) 
{ 
    // Handle the error. 
    // You could log something, throw exception, exit early, etc. 
    // Do whatever is appropriate for your application. 
} 
else 
{ 
    _tbExample = new Double (Double.valueOf(s).doubleValue()); 
} 
1

我可以看到你为什么在这里混淆。您正在采取String,将其解析为Double,将其变为double并再次返回到Double。一个更简单的解决办法就是做

_tbExample = s == null ? null : Double.valueOf(s); 

这种处理情况snull,拐弯StringDouble


这是给你一个简单的测试程序。

Double _tbExample; 

String s = null; 
_tbExample = s == null ? null : Double.valueOf(s); 
System.out.println("_tbExample="+_tbExample); 

打印

_tbExample=null 
+0

_tbExample = Double.valueOf(s)仍然给我空指针异常..plz帮助 – jack 2011-05-24 19:25:20

+0

@jack,我会预料到的。当你尝试我的建议时会发生什么? – 2011-05-24 19:31:53

+0

它给了我相同的空指针例外,并指向同一地点后更改 – jack 2011-05-24 19:33:45