无法在Java中将字符串转换为整数

无法在Java中将字符串转换为整数,java,numberformatexception,Java,Numberformatexception,我已经写了一个函数来将字符串转换成整数 if ( data != null ) { int theValue = Integer.parseInt( data.trim(), 16 ); return theValue; } else return null; 我有一个字符串是6042076399,它给了我错误: Exception in thread "main" java.lang.NumberFormatExcepti

我已经写了一个函数来将字符串转换成整数

   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)

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

该字符串大于integer.MAX\u值。无法分析超出整数范围的内容。(我相信它们会上升到2^31-1)。

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


int
可以容纳的最大大小为231-1,即2147483647。你的价值是6042076399。如果需要基元类型,应该考虑将其存储为
long
。a long的最大值明显大于-263-1。另一个选项可能是。

整数不能保存该值。6042076399(十进制为413424640921)大于2147483647,即整数可以容纳的最大值


尝试使用
Long.parseLong

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

将其转换为int

编辑(2015年4月8日):

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

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

他用的是原始类型。我建议在
long
之前使用
long
。我甚至可能建议在
Long
之前使用
biginger
,尽管我并不完全确定这一点。请注意,通过指定16作为
parseInt
的第二个参数,可以将字符串解析为十六进制数。除非情况有所改变,
Integer.parseInt()
是首选方法,因为它将缓存常用值以提高性能。创建新的整数将始终创建新的整数对象。然而,这是Java5之前的版本——如果现在两者都做相同的事情,我不会感到惊讶。