【发布时间】:2014-11-09 05:27:56
【问题描述】:
我在一个类中创建了一个方法,该方法应该解析具有以下格式的文件:名称,xxx-xxx-xxxx 对于每一行。我正在尝试获取电话号码并将每个数字放入一个整数数组中并返回该数组。这是我的代码。
这是导致错误的行---
theIntNumber=Integer.parseInt(justAnotherString);
如果我有:尼古拉斯·詹姆斯,912-345-6789
那么……
justAnotherString = "9123456789" 并且在尝试将字符串解析为 int 时会引发错误。我很困惑为什么会发生这种情况,它不应该从这个字符串中解析 int 吗?
感谢您的任何回答。
public int[] getPhoneNumberArray() throws FileNotFoundException
{
Scanner scan = new Scanner(file);
while(scan.hasNextLine())
{
String thePhoneNumber = "";
String justAnotherString = "";
int theIntNumber=0;
String line = scan.nextLine();
Scanner parser = new Scanner(line);
parser.useDelimiter(",");
parser.next();
parser.useDelimiter(" ");
parser.next();
thePhoneNumber = parser.next();
Scanner lol = new Scanner(thePhoneNumber);
lol.useDelimiter("-");
justAnotherString += lol.next();
justAnotherString += lol.next();
justAnotherString += lol.next();
theIntNumber=Integer.parseInt(justAnotherString);
for(int i=10;i>0;i--)
{
phoneNumberArray[i-1]=theIntNumber%10;
}
}
for(int a=0;a<10;a++)
{
System.out.println("Phone Number: ");
}
return phoneNumberArray;
}
编辑:之前的号码是 123-456-7890。我之前的数字比java能处理的21亿还大。 987-654-3210 是一个更好的例子。
这是我遇到的错误。
Exception in thread "main" java.lang.NumberFormatException: For input string: "9876543210"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at exam2.Contact.getPhoneNumberArray(Contact.java:71)
at exam2.ExamTwoInput.main(ExamTwoInput.java:83)
【问题讨论】:
-
给我们完整和准确的错误信息。
-
@DennisMeng:我个人认为这不是骗人的。问题可能相似,但问题不同。
-
@Makoto 是的,我意识到作者提到的特定输入实际上并没有溢出 int。但如果他输入了类似 9876543210 的内容,那么我更倾向于认为这是一个骗局。
-
啊。是的,现在我看到更新后的输入,我更倾向于相信这是一个骗局。
-
我不相信。预期的结果与链接的副本完全不同。
标签: java string-parsing