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),最大的long9223372036854775807 (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