Проверка на наличие лишних пустых строк при создании объектов из текстового файла - PullRequest
2 голосов
/ 29 марта 2020

Я пытаюсь создать объекты Student, читая из данного текстового файла, но текстовый файл содержит кучу пустых пустых строк под фактической информацией. Мне не разрешается редактировать текстовый файл, а также не разрешается использовать любые другие методы, кроме сканера, для чтения из файла. Все работает нормально, пока я не дохожу до конца файла, где NoSuchElementException выбрасывается и код не работает.

        ArrayList<Student> Students = new ArrayList<>();
        while (fileIn.hasNextLine()) {
            Student student = new Student(fileIn.next(), fileIn.next(), fileIn.nextInt());
            student.setExam1(fileIn.nextInt());
            student.setExam2(fileIn.nextInt());
            student.setExam3(fileIn.nextInt());
            Students.add(student);
            fileIn.nextLine();
            System.out.println(student.toString());
        }

Файл выглядит так

Peck    CSI1000 12345   97  76  72
Rhodes  CSI1000 87649   98  70  73
Rinke   CSI1000 87649   78  70  78
Romanski    CSI1000 87649   84  84  95
Rombach CSI1000 12345   82  86  96
Ruan    CSI1000 87649   70  94  76
Ruc CSI1000 87649   97  98  80
Scott   CSI1000 87649   90  80  73
Shah    CSI1000 87649   98  72  71
Teal    CSI1000 87649   89  72  99
Tingley CSI1000 87649   76  85  72
Towne   CSI1000 87649   71  71  100
Tucker  CSI1000 12345   89  71  93
Ureel   CSI1000 87649   76  80  99
Wallace CSI1000 87649   76  100 71
Weber   CSI1000 87649   75  73  75
Wierszewski CSI1000 12345   93  90  72
Wilmot  CSI1000 12345   85  96  74
Wilson  CSI1000 12345   91  75  97
Yang    CSI1000 87649   83  80  85
Yasoni  CSI1000 87649   78  90  76









1 Ответ

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

вы можете попытаться перехватить исключение

    ArrayList<Student> Students = new ArrayList<>();
            while (fileIn.hasNextLine()) {
            try{
                Student student = new Student(fileIn.next(), fileIn.next(), fileIn.nextInt());
                student.setExam1(fileIn.nextInt());
                student.setExam2(fileIn.nextInt());
                student.setExam3(fileIn.nextInt());
                Students.add(student);
                fileIn.nextLine();
                System.out.println(student.toString());
            }catch(NoSuchElementException e){
                //break;
                fileIn.nextLine();

                System.out.println("exception");
            }
            }

или вы можете просто break внутри блока перехвата, если после исключения вы больше не ожидаете никакой информации

...