无法在Java中将String转换为Integer

时间:2010-08-18 23:56:48

标签: java numberformatexception

我编写了一个将字符串转换为整数

的函数
   if ( data != null )
   {
        int theValue = Integer.parseInt( data.trim(), 16 );
        return theValue;
   }
   else
       return null;

我有一个字符串,它是6042076399,它给了我错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: "6042076399"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
    at java.lang.Integer.parseInt(Integer.java:461)

这不是将字符串转换为整数的正确方法吗?

5 个答案:

答案 0 :(得分:8)

Integer无法保存该值。 6042076399(413424640921,十进制)大于2147483647,最大整数可以容纳。

尝试使用Long.parseLong

答案 1 :(得分:8)

这是我喜欢的方式:

编辑(08/04/2015):

如下面的评论中所述,实际上这样做更好:

String numStr = "123";
int num = Integer.parseInt(numStr);

答案 2 :(得分:4)

这是正确的方法,但您的值大于int的最大尺寸。

int可容纳的最大大小为2 31 - 1或2,147,483,647。您的价值是6,042,076,399。如果需要基本类型,则应该将其存储为long。 long的最大值明显更大 - 2 63 - 1.另一个选项可能是BigInteger

答案 3 :(得分:2)

该字符串大于Integer.MAX_VALUE。你无法解析超出整数范围的东西。 (我相信它们会达到2 ^ 31-1。)

答案 4 :(得分:1)

除了其他人回答的内容之外,如果您的字符串超过8个十六进制数字(但最多16个十六进制数字),您可以使用Long.parseLong()而不是使用int将其转换为long Integer.parseInt()