java.lang.NumberFormatException:用于输入字符串

时间:2012-12-18 14:34:06

标签: java

日食说lang和我无法找到解决方案

  

线程“main”中的异常java.lang.NumberFormatException:对于输入字符串:“2463025552”       at java.lang.NumberFormatException.forInputString(Unknown Source)       在java.lang.Integer.parseInt(未知来源)       在java.lang.Integer.parseInt(未知来源)       在Main.main(Main.java:31)

String s2[]=s.split("\\,");
Records rec=new Records();
rec.setName(s1[0]);
rec.setAddres(s2[0]);

phone  = Integer.parseInt( s2[1].trim() );
System.out.println(phone);

我从这个格式的文件中读取名称-adres,手机和广告在arraylist中为手机拨打我有问题

7 个答案:

答案 0 :(得分:26)

如果传递的字符串不是整数的有效表示,则Integer.parseInt会抛出NumberFormatException。在这里,您尝试传递 2463025552 超出整数范围

使用long而不是

long phone = Long.parseLong(s2[1].trim() )

答案 1 :(得分:16)

真正的问题是电话号码不是整数。这是String。您不应将其存储为数字,原因类似于您现在遇到的问题。这同样适用于邮政编码,运动队的球衣号码以及许多其他“假”号码。

答案 2 :(得分:4)

有符号32位整数最多只能读取2 ^ 31。您必须使用更大的数据类型。很长会让你达到2 ^ 63。

答案 3 :(得分:2)

基本的是,我们不需要电话号码作为加法,减法等算术计算的一部分。因此我们可以安全地将其作为字符串。

答案 4 :(得分:1)

2463025552 

超出int数据类型的范围,尝试给出较少的数字。还要检查它是否采用正确的数字格式(如无空格等)

答案 5 :(得分:0)

Integer.parseInt( s2[1].trim() );这是你的问题。因此,请将解析Integer更改为Long

答案 6 :(得分:0)

将您的数据类型更改为long或bigint。你的字符串太长了,因为它有异常..