Списки массивов и чтение текстовых файлов в Java - PullRequest
0 голосов
/ 03 марта 2020
public class Student {

    private String name;
    private String courseName;
    private double exam1;
    private double exam2;
    private double exam3;

    public Student(String name, String courseName, double exam1, double exam2, double exam3) {
        this.name = name;
        this.courseName = courseName;
        this.exam1 = exam1;
        this.exam2 = exam2;
        this.exam3 = exam3;
    }
        public String toString() {
        calcGrade();
        String str = "Student: " + name + "\n\tClass Name: " + courseName + "\n\tGrade: " + grade;
        return str;
    }
}

Main:

    public static void main(String[] args) throws IOException {

        Scanner fileIn = new Scanner (new File("students.txt"));
        ArrayList <Student> list = new ArrayList<>();


        while (fileIn.hasNextLine()) {
            list.add(new Student(fileIn.next(), fileIn.next(), fileIn.nextDouble(), fileIn.nextDouble(), fileIn.nextDouble()));
        }
        fileIn.close();
        System.out.println(list.toString());
    }

}

Что мне здесь не хватает? Программа не компилируется, и я остаюсь с этим:

Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1371)
at ayers_hwk3.Ayers_Hwk3.main(Ayers_Hwk3.java:29)

Я все еще очень плохо знаком с программированием в Java, и это далеко от меня.

1 Ответ

0 голосов
/ 03 марта 2020

Вы получаете это, поскольку в файле могут отсутствовать поле, пробел или символ новой строки. Поэтому, когда вы выполняете fileIn.next * (), он генерирует исключение NoSuchElementException

Вместо этого вы можете сделать что-то вроде этого.

while (fileIn.hasNextLine()) {
    String line = fileIn.nextLine();
    String[] words = line.split(' ')
    list.add(new Student(words[0], words[1], words[2], words[3], words[4]);
 }

Incase это вызывает исключение ArrayIndexOutOfBounds, затем вывести слова и узнать точное местоположение ошибки в файле.

...