为什么尝试解析此值会导致NumberFormatException?

时间:2010-02-12 13:42:43

标签: java exception

代码

String myVar = "1255763710960";
int myTempVar=0;
try
{ 
   myTempVar = Integer.valueOf(myVar);
}
catch (NumberFormatException nfe)
{
    System.out.println(nfe.toString());
}

输出

java.lang.NumberFormatException: 
For input string: "1255763710960"

我完全不知道为什么会这样。

4 个答案:

答案 0 :(得分:9)

您尝试存储的值太大而无法容纳整数。 maximum value for an Integer 是2 31 -1,或大约20亿。这个数字超过了几个数量级。

尝试使用 Long parseLong()

答案 1 :(得分:4)

Java Integer最大值为2 ^ 31-1 = 2147483647

您应该使用Long.valueof()

答案 2 :(得分:3)

您的字符串表示太大(> Integer.MAX_VALUE),无法解析为int。试试一下。

答案 3 :(得分:2)

1255763710960超过Integer.MAX_VALUE,即2147483647,因此该值不适合int

您需要使用longLong.valueOf()(或更好的Long.parseLong()来避免不必要的自动拆箱)来解析该值。