Netbeans抛出NumberFormatException

时间:2013-04-07 11:41:13

标签: java numberformatexception

  

线程中的异常“AWT-EventQueue-0”java.lang.NumberFormatException:对于输入字符串:“1.0”       at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)       在java.lang.Integer.parseInt(Integer.java:458)       在java.lang.Integer.parseInt(Integer.java:499)       在newform.fivth。(fivth.java:150)       at newform.fivth $ 3.run(fivth.java:623)       在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)       at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)       at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)       at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)       at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)       at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)       at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)       在java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

这是错误引用的代码的一部分:

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);
} 

1 个答案:

答案 0 :(得分:2)

根据Java,字符串"1.0"不能表示为int,但可以表示为doubleInteger.parseInt的解析逻辑期望 not 是小数点,即使小数点后面只有零。

引用Javadoc for Integer.parseInt

  

将字符串参数解析为带符号的十进制整数。那些角色   在字符串中必须都是十进制数字,除了第一个   字符可以是ASCII减号' - '('\ u002D')来表示a   负值或ASCII加号'+'('\ u002B')表示a   正值。

它不期望小数点。

如果您必须接受诸如String之类的"1.0"并存储生成的int,那么我会将其解析为Double,然后致电intValue。而不是以下:

Integer.parseInt(results4.getString(i))

我会用这个:

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

当然,你必须使值真的是一个整数。有关这些详细信息,请参阅this SO question