0

スレッド「AWT-EventQueue-0」で例外 java.lang.NumberFormatException: 入力文字列の場合: java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) で「1.0」、java.lang.Integer.parseInt(Integer.java) で:458) java.lang.Integer.parseInt(Integer.java:499) で newform.fivth.(fivth.java:150) で newform.fivth$3.run(fivth.java:623) で java.awt.event .InvocationEvent.dispatch(InvocationEvent.java:209) で java.awt.EventQueue.dispatchEvent(EventQueue.java:597) で java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) で java.awt.EventDispatchThread.pumpEventsForFilter( EventDispatchThread.java:184) で java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) で java.awt.EventDispatchThread で。java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) での pumpEvents(EventDispatchThread.java:169) 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);
} 
4

1 に答える 1

2

Java によれば、文字列"1.0"は として表すことはできませんが、 として表すintことはできますdouble。の解析ロジックでは、小数点の後にゼロがあったとしても、小数点がないInteger.parseIntことを想定しています。

Javadocを引用するにはInteger.parseInt

文字列引数を符号付き 10 進整数として解析します。文字列内の文字はすべて 10 進数でなければなりませんが、最初の文字は負の値を示す ASCII マイナス記号 '-' ('\u002D') または ASCII プラス記号 '+' ('\u002B') にすることができます。正の値を示します。

小数点は必要ありません。

Stringなどを受け入れ"1.0"て結果を保存する必要がある場合は、次のようintに解析してDoubleから呼び出しますintValue。以下の代わりに:

Integer.parseInt(results4.getString(i))

私はこれを使用します:

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

もちろん、値を実際に整数にする必要があります。詳細については、この SO の質問を参照してください。

于 2013-05-10T19:15:14.120 に答える