我正在尝试通过读取给定的文本文件来创建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
您可以尝试捕获异常
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");
}
}
或者您可以仅在catch块内单击break
,如果在异常之后您仍然不希望有更多信息,则>]