Java Integer.parseInt()抛出;对于输入字符串:XXX";

Java Integer.parseInt()抛出;对于输入字符串:XXX";,java,math,Java,Math,我正在从csv文件中读取大量记录。 其中一列是amount,它有两个小数位。 因此,我想将其解析为整数形式,但出现以下错误: int trxnAmt = Integer.parseInt("002428859600"); 假设是2428859600,对吗 但它向我抛出错误>java.lang.NumberFormatException:对于输入字符串:“00242859600” 我尝试使用: long a = Long.parseLong("002428859600"); 这对我很管用 我还

我正在从csv文件中读取大量记录。 其中一列是amount,它有两个小数位。 因此,我想将其解析为整数形式,但出现以下错误:

int trxnAmt = Integer.parseInt("002428859600");
假设是2428859600,对吗

但它向我抛出错误>java.lang.NumberFormatException:对于输入字符串:“00242859600”

我尝试使用:

long a = Long.parseLong("002428859600");
这对我很管用


我还是不知道发生了什么事。数字是否太大?

是的,您正在将超出范围的整数值传递给
parseInt
方法

int数据类型是一个32位带符号2的补码整数。它有 最小值为-2147483648,最大值为2147483647 (包括在内)

尝试长时间或其他合适的选项。

这可能会对您有所帮助:

是的,您正在将超出范围的整数值传递给
parseInt
方法

int数据类型是一个32位带符号2的补码整数。它有 最小值为-2147483648,最大值为2147483647 (包括在内)

尝试长时间或其他合适的选项。

这可能会对您有所帮助:

2428859600
是一个很长的数字。尝试为其分配一个int,您将得到一个编译器错误:

int i = 2428859600;  // error as 2428859600 is clearly outta int range(2,147,483,647)
long l = 2428859600L; //no error

2428859600
是一个长数字。尝试为其分配一个int,您将得到一个编译器错误:

int i = 2428859600;  // error as 2428859600 is clearly outta int range(2,147,483,647)
long l = 2428859600L; //no error
这个数字太大了吗

对。
int
是4个字节,因此适合
int
的最大数字是24*8-1-1=231-1=2147483647(4*8-1,因为符号需要1位)

这个数字太大了吗

对。
int
是4个字节,因此适合
int
的最大数字是24*8-1-1=231-1=2147483647(4*8-1,因为符号需要1位)


请参阅。

您应该确保您的输入确实是一个整数(即“16”),或者如果它超出整数范围,则使用
Double.parseDouble()
Long.parseDouble()
您应该确保您的输入确实是一个整数(即“16”),或者如果它超出整数范围,则使用
Double.parseDouble()
Long.parseLong()

您将获得
java.lang.NumberFormatException:对于输入字符串:“00242859600”
,因为数字
00242859600
不能表示为32位整数(type
int
)。它可以表示为64位整数(类型
long
)。Java中的长文字以“L”结尾:
002428859600L
您将获得
Java.lang.NumberFormatException:对于输入字符串:“002428859600”
,因为数字
002428859600
不能表示为32位整数(type
int
)。它可以表示为64位整数(类型
long
)。Java中的长文字以“L”结尾:
00248859600L
Integer.MAX_VALUE=0x7fffffff
-您的数字是90c574d0,所以是:它对于整数来说太大了。
Integer.MAX_VALUE=0x7fffff
-您的数字是90c574d0,所以是:对于整数来说太大了。长文字以“L”结尾与问题无关。字符串中的数字不是数字文字。我不是说您可以尝试Integer.parseInt(“002428859600L”);解决问题。我刚才提到了异常的根本原因。如果您尝试使用Integer.parseInt(“00242859600L”);我想你误解了……你回答的第一句话是正确的;2428859600不适合32位带符号的
int
。但为什么你提到长文字以“L”结尾?这也是事实,但与问题完全无关。@SarathKumarSivan注意,
L
不是
parseInt
的有效字符,
Integer.parseInt(“123L”)
抛出一个
NumberFormatException
。长文本以“L”结尾与问题无关。字符串中的数字不是数字文字。我不是说您可以尝试Integer.parseInt(“002428859600L”);解决问题。我刚才提到了异常的根本原因。如果您尝试使用Integer.parseInt(“00242859600L”);我想你误解了……你回答的第一句话是正确的;2428859600不适合32位带符号的
int
。但为什么你提到长文字以“L”结尾?这也是事实,但与问题完全无关。@SarathKumarSivan注意,
L
不是
parseInt
的有效字符,
Integer.parseInt(“123L”)
抛出一个
NumberFormatException