У меня возникли некоторые проблемы с моей программой для чтения файлов, которая использует сканер, и сейчас я немного растерялся. Пытаюсь прочитать файл со сканера, но я получаю сообщение 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 ++;
}
}
Это должно взять каждую запись, разделенную пробелом из списка, содержащего как Strings, так и значения типа 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