14

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

   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)

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

4

5 回答 5

12

这是我喜欢这样做的方式:

编辑(2015 年 8 月 4 日):

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

String numStr = "123";
int num = Integer.parseInt(numStr);
于 2010-08-19T03:27:38.933 回答
9

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

尝试使用Long.parseLong.

于 2010-08-18T23:59:40.703 回答
4

这是正确的方法,但是您的值大于int.

可容纳的最大尺寸int为 2 31 - 1,或 2,147,483,647。你的价值是 6,042,076,399。long如果你想要一个原始类型,你应该把它存储为一个。long 的最大值明显更大 - 2 63 - 1。另一个选项可能是BigInteger

于 2010-08-18T23:59:40.297 回答
2

该字符串大于 Integer.MAX_VALUE。您无法解析超出整数范围的内容。(我相信它们会上升到 2^31-1)。

于 2010-08-18T23:59:16.663 回答
1

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

于 2010-08-19T00:03:43.067 回答