9

日食は、ラングと私が解決策を見つけることができないことを示しています

スレッド「メイン」での例外 java.lang.NumberFormatException: 入力文字列の場合: java.lang.Integer.parseInt(不明なソース) の java.lang.Integer.parseInt(不明なソース) での java.lang.NumberFormatException.forInputString の「2463025552」。 Main.main(Main.java:31) の parseInt(不明なソース)

String s2[]=s.split("\\,");
Records rec=new Records();
rec.setName(s1[0]);
rec.setAddres(s2[0]);

phone  = Integer.parseInt( s2[1].trim() );
System.out.println(phone);

この形式のファイルから読み取ります-アドレス、電話、および電話用に配置された配列リストの広告に問題があります

4

7 に答える 7

29

渡された文字列が整数の有効な表現でない場合、Integer.parseInt は NumberFormatException をスローします。ここでは、整数範囲外の2463025552を渡そうとしています。

代わりに long を使用

long phone = Long.parseLong(s2[1].trim() )
于 2012-12-18T14:35:42.463 に答える
16

本当の問題は、電話番号が整数ではないことです。ですString。現在発生している問題と同様の理由で、数値として保存しないでください。同じことが、郵便番号、スポーツ チームの背番号、およびその他の多数の「偽の」番号にも当てはまります。

于 2012-12-18T14:37:38.390 に答える
4

符号付き 32 ビット整数は、2^31 までしか読み取ることができません。より大きなデータ型を使用する必要があります。long は最大 2^63 になります。

于 2012-12-18T14:38:30.023 に答える
2

基本的なことは、電話番号を足し算や引き算などの算術計算の一部にする必要がないということです。したがって、電話番号を安全に文字列として受け取ることができます。

于 2012-12-18T15:27:11.590 に答える
1
2463025552 

は int データ型の範囲外です。より小さい数値を指定してください。また、数値の形式が正しいかどうかも確認してください (スペースがないなど)。

于 2012-12-18T14:36:09.153 に答える
0

データ型を long または bigint に変更します。あなたの文字列が長すぎて、それが例外を持っている理由です..

于 2012-12-18T14:44:04.587 に答える
0

Integer.parseInt( s2[1].trim() );ここにあなたの問題があります。したがって、解析Integerを次のように変更しますLong

于 2012-12-18T14:38:42.483 に答える