线程“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中为手机拨打我有问题
答案 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。你的字符串太长了,因为它有异常..