线程中的异常“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);
}
答案 0 :(得分:2)
根据Java,字符串"1.0"
不能表示为int
,但可以表示为double
。 Integer.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。