当前位置: 代码迷 >> J2SE >> 用Integer.parseInt()转换字符时抛出NumberFormatException错误,把字符改短一点又没事
  详细解决方案

用Integer.parseInt()转换字符时抛出NumberFormatException错误,把字符改短一点又没事

热度:448   发布时间:2016-04-24 14:34:15.0
用Integer.parseInt()转换字符时抛出NumberFormatException异常,把字符改短一点又没事
String   line3[1]= "8613719716 ";
  int   int1=java.lang.Integer.parseInt(line3[1]);

以上是程序中的一小段,但是在运行的过程中总是抛出异常
Exception   in   thread   "main "   java.lang.NumberFormatException:   For   input   string:   "8613719716 "

但是把字符减少一位变成 "861371971 "时又不出抛出异常,我想问下这到底是不是字符长度的问题,或者是其它的原因


------解决方案--------------------
int类型存储范围是-2,147,483,648 --2,147,483,647
"8613719716 "超出范围 转换失败
------解决方案--------------------
用System.out.println(Integer.MAX_VALUE);输出的是2147483647,晕,多看点基础的书
------解决方案--------------------
这是因为你没搞清楚java中int类型的范围,在java中int取值是从-2147483648到2147483647,2的31次方.而你的 String line3[1]= "8613719716 ";超过了这个最大的值,当然会抛NumberFormatException这个异常,说明不能转换类型.去掉一个能成功是因为他在范围内.


------解决方案--------------------
BigInteger b = new BigInteger( "8613719716 ");
------解决方案--------------------
楼上正确,用大数字吧,import一个java.math,可以得到
------解决方案--------------------
8613719716 根本无法直接使用int表示的,只能用long

如果更大了就得用到BigInteger
------解决方案--------------------
Long.parseLong(String)
------解决方案--------------------
嗯.你的数超出了int的范围了!!
  相关解决方案