的Integer.parseInt( “9999999990”);

时间:2014-09-10 17:23:21

标签: java exception

我收到String 9999999990的NumberFormatException,但是当我使用1111111110时没有 当我通过该字符串调用Integer.parseInt时。 让我知道有什么不对。

String str="9999999990";
  int f = Integer.parseInt("2147483647");// No Exception here
        int x =Integer.parseInt(str);   // Exception is thrown here 

2 个答案:

答案 0 :(得分:7)

Integer.parseInt解析无法表示为int时,它会抛出异常。第一个例子是近100亿,大于最大可能的int,这个数字略高于20亿。

Integer.parseInt(String)代表Integer.parseInt(String, 10),采用基数的版本,以及那些Javadocs状态:

  

如果发生以下任何一种情况,则抛出NumberFormatException类型的异常:

     
      
  • 第一个参数为null或是一个长度为零的字符串。
  •   
  • 基数小于Character.MIN_RADIX或大于Character.MAX_RADIX。
  •   
  • 字符串的任何字符都不是指定基数的数字,除了第一个字符可能是减号' - ' (' \ u002D')或加号' +' (' \ u002B')前提是字符串长度超过1。
  •   
  • 字符串表示的值不是int 的值。
  •   

(强调我的)

如果您需要解析它,可以使用Long.parseLong,它将处理更大的数字。

答案 1 :(得分:6)

int的最大值只能为2147483647,因此如果您尝试解析的数字大于该值,您将获得异常(因为它不是有效的{{1} }}。)

int将处理更大的数字,但请记住它仍然有一个上限(2 ^ 63-1)。如果你真的需要一个没有上限的类型,那么你必须使用BigInteger(它有一个带字符串的构造函数。)

(您可以找到有关所有原始数据类型及其最大值here的更多信息。)

相关问题