gpt4 book ai didi

java - 输入字符串的 NumberFormatException,困惑为什么?

转载 作者:行者123 更新时间:2023-12-02 05:17:09 27 4
gpt4 key购买 nike

我在一个类中创建了一个方法,该方法应该解析格式为:name, 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)

最佳答案

您的代码在这里正常工作,我看到的唯一问题是您将 int 数字转换为数组的公式似乎有缺陷。无论如何,您都不需要 int,因为您将其作为 justAnotherString。基本上,你可以使用 Character.digit(char, int) 像 -

int[] phoneNumberArray = new int[justAnotherString.length()];
for (int i = 0; i < justAnotherString.length(); i++) {
phoneNumberArray[i] = Character.digit(justAnotherString.charAt(i), 10);
}
System.out.println(Arrays.toString(phoneNumberArray));

当然,你也可以用类似的方法解析电话号码

String line = "Nicholas James, 123-456-7890";
// get everything after the last space.
String phone = line.substring(line.lastIndexOf(' ') + 1);
phone = phone.replace("-", ""); // remove the '-' symbols
int[] phoneNumberArray = new int[phone.length()];
for (int i = 0; i < phone.length(); i++) {
phoneNumberArray[i] = Character.digit(phone.charAt(i), 10);
}
System.out.println(Arrays.toString(phoneNumberArray));

其优点是可以使用(或不使用)破折号。

关于java - 输入字符串的 NumberFormatException,困惑为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26825306/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com