なぜこうなった?解析している文字列は、明らかに int のように見えます。プログラムはファイルから読み取りを行っていますが、この数字がリストのずっと下にあるため、最もうまく機能していることがわかります。何か案は?また、プログラムは 22 億を超える整数を解析しているため、サイズの問題かどうかはわかりません。
質問する
5694 次
4 に答える
7
符号付き 32 ビットint
は、2^31 または 0x7FFFFFFF (2,147,483,647) までしか大きくできません。より大きなデータ型を使用する必要があります。long
2 ^ 63まで取得できます。または、BigIntegerクラスが任意のサイズの整数を取得します。
于 2012-06-12T17:23:38.707 に答える
2
int
最小値-2,147,483,648
と最大値2,147,483,647
(両端を含む) を持つことができます, あなたの番号 (文字列から) は範囲外です.
long
代わりに使用するLong.parseLong(3291105000)
とうまくいきます
于 2012-06-12T17:23:26.770 に答える
0
long
64 ビット整数を保持できる を使用します。
int
s は最大 20 億までの整数しか保持できませんlong
s は ~9e18 までの整数を保持できます
于 2012-06-12T17:26:24.483 に答える
0
他の人が言ったように、数値は明らかに int の範囲外であるため、例外が発生しています。
4 バイト、符号付き (2 の補数)。-2,147,483,648 ~ 2,147,483,647。すべての数値型と同様に、int は他の数値型 (byte、short、long、float、double) にキャストできます。非可逆キャスト (int から byte など) が行われる場合、変換は小さい方の型の長さを法として行われます。
于 2012-06-12T17:26:37.360 に答える