Netbeans的投掷NumberFormatException异常

问题描述:

在异常线程 “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); 
} 

雅高对于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