Я читаю файл, используя разделитель со сканером. Когда я добираюсь до последней записи файла, он говорит, что я вне пределов. Если я правильно подсчитаю, я все же в границах.Ошибка при чтении последней записи файла
Вот код, который вызывает ошибку несоответствия ввода. Любая помощь приветствуется. Благодарю.
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.InputMismatchException;
import java.util.NoSuchElementException;
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws IOException {
String personName = null;
double score = 0;
File myFile = new File("twogrades.dat");
try {
Scanner scan = new Scanner(myFile).useDelimiter(",");
while (scan.hasNext()) {
personName = scan.next();
for (int i = 0; i <= 5; i++) {
score += ((scan.nextDouble()/50) * 0.03);
}
for (int i = 6; i <= 11; i++) {
score += ((scan.nextDouble()/10) * 0.02);
}
score += ((scan.nextDouble()) * 0.20);
score += ((scan.nextDouble()) * 0.50);
PrintWriter out = new PrintWriter(new BufferedWriter(
new FileWriter("grades.dat", true)));
out.println(personName + " " + score);
out.close();
score = 0;
scan.nextLine();
}
scan.close();
} catch (InputMismatchException e) {
System.out.println(e.getMessage()
+ " You entered a wrong data type");
} catch (NoSuchElementException e) {
System.out.println(e.getMessage()
+ " There are no more elements left in the file");
} catch (IllegalStateException e) {
System.out.println(e.getMessage());
}
}
}
Вот файл
Yuri Allen,5,26,16,22,18,3,0,4,4,2,10,2,54,89
могли бы вы также обеспечить ваш 'twogrades.dat' пример файла? – Solorad
Прочитайте и опубликуйте трассировку стека исключения. Используйте свой отладчик. Проверьте и опубликуйте свой входной файл. –
Я не могу воспроизвести эту ошибку с предоставленными вами данными. – Pshemo