这是因为
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 = 2147483647java> Long a = Long.parseLong(n.trim());//=>java.lang.Long a = 3020857508
上面是javarepl的输出。
如果使用的是JDK9或更高版本,则在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 ==> 2147483647jshell> Long a = Long.parseLong(n.trim());a ==> 3020857508
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)