2013-04-07 230 views
0

在異常線程 「AWT-EventQueue的-0」 java.lang.NumberFormatException:對於輸入字符串: 「1.0」 在java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) 在java.lang.Integer.parseInt(Integer.java:458) at java.lang.Integer.parseInt(Integer.java:499) at newform.fivth。(fivth.java:150) at newform.fivth $ 3。在java.awt.EventDispatchThread處運行(fivth.java:623) (java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) (java.awt.EventQueue.dispatchEvent(EventQueue.java:597) )。 pumpOneEventForFilters(EventDispatchThread.java:2 69) 在java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) 在java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) 在java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 在java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 在java.awt.EventDispatchThread.run(EventDispatchThread.java:122)Netbeans的投擲NumberFormatException異常

這是錯誤指的是代碼的一部分:

while (results4.next()) 
{ 
for(int i=1;i<=12;i++) 
      { 
     x.add(Integer.parseInt(results4.getString(i))+0.5);  

      } 

} 
} 
catch(SQLException sqlEx){ 
System.out.println(
"* Error retrieving data! *"); 
sqlEx.printStackTrace(); 
System.exit(1); 
} 

回答

2

雅高對於Java,字符串"1.0"不能表示爲int,但它可以表示爲doubleInteger.parseInt的解析邏輯預計有不是是一個小數點,即使小數點後面只有一個零。

引述Javadoc for Integer.parseInt

將字符串參數作爲有符號的十進制整數。字符串中的字符 必須全部爲十進制數字,但第一個 字符可能是ASCII減號' - '('\ u002D')以指示 負值或ASCII加號'+'('\ u002B')表示 正值。

它不期望有一個小數點。

如果你必須接受一個String"1.0"和存儲所產生的int,那麼我會分析它作爲Double然後調用intValue。取而代之的是以下幾點:

Integer.parseInt(results4.getString(i)) 

我這樣做:

Double.valueOf(results4.getString(i)).intValue() 

當然,你將不得不作出的價值確實是一個整數。有關這些詳細信息,請參閱this SO question