2011-05-24 50 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