Integer.parse(String str)java.lang.NumberFormatException:错误
我不断得到数字格式的期望,即使我正在修剪字符串并且它们不包含非数字字符,奇怪的是它适用于某些数字,而不适用于其他数字。 下面是一个我得到数字格式exception的字符串示例。 此外,任何以0开头的字符串,例如“0208405223”,返回208405223,不再有零是应该发生的吗?
String n="3020857508"; Integer a = Integer.parseInt(n.trim()); System.out.println(a);
这是例外:
Exception in thread "main" java.lang.NumberFormatException: For input string: "3020857508" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:583) at java.lang.Integer.parseInt(Integer.java:615) at JavaBeans.Main.main(Main.java:15)
这是因为3020857508
超过了Integer.MAX_VALUE
。 您应该使用long
将字符串转换为数字。
java> String n="3020857508"; //=> java.lang.String n = "3020857508" java> Integer a = Integer.parseInt(n.trim()); //=> java.lang.NumberFormatException: For input string: "3020857508" java> Integer.MAX_VALUE //=> java.lang.Integer res2 = 2147483647 java> Long a = Long.parseLong(n.trim()); //=>java.lang.Long a = 3020857508
以上是javarepl输出。
作为int
可解析的最大数字是2147483647
(2 31 -1),最大的long
是9223372036854775807
(2 63 -1),只有大约两倍的长度。
要解析任意长数,请使用:
import java.math.BigInteger; BigInteger number = new BigInteger(str);
MAX_INT是2147483647,你试图解析一个更大的数字作为整数。
您可以使用Long.parseLong
:
System.out.println(Long.parseLong("3020857508")); // 3020857508
你可以用
String n="3020857508"; Long a = Long.valueOf(n.trim()).longValue(); System.out.println(a);
就像@Codebender所说的那样。 你的值超出了int的范围。 尝试使用long / Long代替。
String n="3020857508"; Long l = Long.parseLong(n.trim()); System.out.println(l);
整数MAX_VALUE:2147483647,长期MAX_VALUE:9223372036854775807
由于字符串n在转换后不适合Integer
,我们必须使用Long
。
如果你仍然不确定String中的范围。 使用BigInteger
,其中数字保存在int[]
在Java中,整数范围从-2,147,483,648到2,147,483,647,确保您的数值在相同之间。
您尝试解析的数字大于Integer
的最大值,您必须使用更大的数据类型,如Long
。
public static void main(String[] args) { System.out.println("Integer max value: " + Integer.MAX_VALUE); System.out.println("Long max value: " + Long.MAX_VALUE); System.out.println(); String n = "3020857508"; Long a = Long.parseLong(n.trim()); System.out.println(a); }
结果:
Integer max value: 2147483647 Long max value: 9223372036854775807 3020857508