无法在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之前的版本——如果现在两者都做相同的事情,我不会感到惊讶。