9

日食告诉那个 lang 我找不到解决方案

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

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);

我以这种格式从文件中读取名称-地址,电话和数组列表中的广告放入电话我有问题

4

7 回答 7

29

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

改用 long

long phone = Long.parseLong(s2[1].trim() )
于 2012-12-18T14:35:42.463 回答
16

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

于 2012-12-18T14:37:38.390 回答
4

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

于 2012-12-18T14:38:30.023 回答
2

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

于 2012-12-18T15:27:11.590 回答
1
2463025552 

超出 int 数据类型的范围,请尝试给出较小的数字。还要检查它是否是正确的数字格式(比如没有空格等)

于 2012-12-18T14:36:09.153 回答
0

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

于 2012-12-18T14:38:42.483 回答
0

将数据类型更改为 long 或 bigint。你的字符串太长了,这就是为什么它有异常..

于 2012-12-18T14:44:04.587 回答