【发布时间】:2019-04-28 16:42:14
【问题描述】:
我在使用扫描仪的文件阅读器时遇到了一些问题,此时我有点不知所措。尝试使用扫描仪读取文件,但 atm 我不断收到java.util.InputMismatchException 消息,这表明我的scanner.next 将错误的文件放入错误的数组中?我不知道为什么会这样,如果有人能在我的代码中指出我搞砸的地方,我将不胜感激。
注意:除非它是相关的,否则忽略无用的变量和过长的数组。我正准备把它变成一个类,一些变量还没有使用。
public static void main(String[] args) throws IOException
{
int playersTotal = 0;
int entries = 0;
int namesIndex = 0;
int attackIndex = 0;
int blockIndex = 0;
String[] playersName = new String[60];
double[] attackScores = new double[60];
double[] blockScores = new double[60];
String file = "roster1.txt";
Scanner scanner = new Scanner(new File(file));
scanner.useDelimiter(" ");
while(scanner.hasNextLine())
{
playersName[namesIndex] = scanner.next();
System.out.println(playersName[namesIndex]);
namesIndex ++;
playersName[namesIndex] = scanner.next();
System.out.println(playersName[namesIndex]);
namesIndex ++;
entries ++;
attackScores[attackIndex] = scanner.nextDouble();
System.out.println(attackScores[attackIndex]);
attackIndex ++;
entries ++;
//problem occurs here:
blockScores[blockIndex] = scanner.nextDouble();
System.out.println(blockScores[blockIndex]);
blockIndex ++;
entries ++;
playersTotal ++;
}
}
这应该从每行都包含字符串和双精度的列表中获取以空格分隔的每个条目,并将其保存到适当的数组中。然而,它只在第一行达到第一个双倍。尝试读取下一个 double 会提示线程异常。
程序输出:
Rachael
Adams
3.36
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextDouble(Scanner.java:2413)
at VerdeVolleyball.main(VerdeVolleyball.java:37)
list I'm using:
1. Rachael Adams 3.36 1.93
2. Kim Hill 1.53 1.76
3. Tori Dixon 0.92 1.62
4. Alisha Glass 1.96 1.55
5. Cursty Jackson 0.69 1.44
6. Michelle Bartsch 0.28 1.42
7. Alexis Crimes 3.89 1.34
8. Foluke Akinradewo 4.81 1.14
9. Courtney Thompson 0.59 0.93
10. Krista Vansant 2.78 0.86
11. Nicole Fawcett 4.01 0.61
12. Kelly Murphy 1.15 0.58
13. Natalie Hagglund 2.49 0.52
14. Kayla Banwarth 2.98 0.5
15. Lauren Gibbemeyer 2.25 0.5
【问题讨论】:
-
您能分享一些您正在阅读的文件中的示例输入吗?
-
完成,添加了我正在使用的列表的数据。
-
题外话,但为什么您的数组需要多个索引变量?
-
老实说,因为我不知道更好的方法。我需要单独分隔名称和双重值,以便我可以以与团队名册一致的格式打印它们。
标签: java arrays file java.util.scanner