Integer.parse(String str) java.lang.NumberFormatException: Errors

前端 未结 8 1625
一整个雨季
一整个雨季 2020-12-11 22:18

I keep getting number format expectations, even though I\'m trimming the strings and they don\'t contain non numerical characters bizarrely it works for some numbers and not

8条回答
  •  感动是毒
    2020-12-11 23:00

    It's because 3020857508 exceeds Integer.MAX_VALUE. You should use long to convert the string to number.

    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
    

    The above is javarepl output.

    If you are using JDK9 or above, you can see the same result in jshell.

    jshell> String n="3020857508"
    n ==> "3020857508"
    
    jshell> Integer a = Integer.parseInt(n.trim())
    |  Exception java.lang.NumberFormatException: For input string: "3020857508"
    |        at NumberFormatException.forInputString (NumberFormatException.java:65)
    |        at Integer.parseInt (Integer.java:652)
    |        at Integer.parseInt (Integer.java:770)
    |        at (#2:1)
    
    jshell> Integer.MAX_VALUE
    $3 ==> 2147483647
    
    jshell> Long a = Long.parseLong(n.trim());
    a ==> 3020857508
    

提交回复
热议问题