Я ищу небольшую помощь. Я немного поработал с поисковой системой с небольшим успехом.Когда синтаксический ввод текстового файла не переходит к следующей строке
Я новичок в программировании и уверен, что это глупый промах с моей стороны.
Данный код предназначен для чтения документа .txt с разделителем табуляции. Файл .txt форматируется в шесть столбцов. В настоящее время, когда я перемещаюсь по файлу, я разбираю строку до соответствующего типа значения и назначаю ее соответствующей переменной. Код здесь:
try {
s = new Scanner(new BufferedReader(new FileReader(file))).useDelimiter("\t");
while (s.hasNextLine()) {
group = Integer.parseInt(s.next());
death = Integer.parseInt(s.next());
name = s.next();
sex = s.next();
age = Integer.parseInt(s.next());
fare = Double.parseDouble(s.next());
System.out.println("Class = " + group); // Test that value is being assigned
System.out.println("Death = " + death); // Test that value is being assigned
System.out.println("Name = " + name); // Test that value is being assigned
System.out.println("Gender = " + sex); // Test that value is being assigned
System.out.println("Age = " + age); // Test that value is being assigned
System.out.println("Fare = " + fare); // Test that value is being assigned
}
} finally {
if (s != null) {
s.close();
}
}
Когда я достигаю последний столбец первой строки, переменная тариф устанавливается в строке 1 колонки 6 и строка 2 столбца 1. По какой-то причине разрыва строки не запуская время цикла Заново.
Может ли кто-нибудь помочь мне понять, почему цикл while не перезапускается в конце строки?
файла выглядит следующим образом:
1 5 Bryan male 25 211.3375
1 2 Jimmy male 22 151.5500
Существует около 1200 строк этого. При запуске этого цикла я получаю следующую ошибку при попытке установить fare = 211.3375 в конце первой строки. По какой-то причине разрыв строки не сбрасывает цикл. Я могу только предположить, что разрыв строки не интерпретируется как вкладка, но не знает, как исправить это.
Exception in thread "main" java.lang.NumberFormatException: For input string: "211.3375 1"
, если быть честным, я бы изменил ваш поток, чтобы сделать nextLine, чтобы прочитать в String, а затем сделать String.split, используя знак tabs. Очевидно, вы не читаете символ EOL. –
Зачем использовать 'Integer # parseInt' или' Double # parseDouble', когда класс 'Scanner' имеет' nextInt' и 'nextDouble'? –