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
,但它可以表示为double
。 Integer.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。