初めて投稿しますが、フォーマットが間違っている場合は、修正を試みます。とにかく、ドライバーを実行しようとすると、Javaでこのエラーが発生し続けます。プログラムの目標は、ファイルに書き込んでから読み取ることです。ファイルに問題なく書き込んだので、ファイルから読み込もうとしていますが、ここにエラーがあります:
報告されていない例外 EmptyFileException; キャッチするか、投げることを宣言する必要があります
University ufl = University.readFromFile("university.txt");
//read from file
public static University readFromFile(String filename) throws EmptyFileException {
File file = new File(filename);
University university = null;
Scanner in = null;
try {
in = new Scanner(file);
String str = in.nextLine();
Scanner in2 = new Scanner(str).useDelimiter(":");
in2.next();
String uName = in2.next();
//Read University info
str = in.nextLine();
in2 = new Scanner(str).useDelimiter(":");
in2.next();
String uTerm = in2.next();
str = in.nextLine();
in2 = new Scanner(str).useDelimiter(":");
in2.next();
int uYear = in2.nextInt();
str = in.nextLine();
in2 = new Scanner(str).useDelimiter(":");
in2.next();
int uNumStudents = in2.nextInt();
str = in.nextLine();
in2 = new Scanner(str).useDelimiter(":");
in2.next();
int uNumInstructors = in2.nextInt();
str = in.nextLine();
in2 = new Scanner(str).useDelimiter(":");
in2.next();
int uNumCourses = in2.nextInt();
//Create and read arrays of objects
Student[] uStudents = new Student[uNumStudents];
for(int i = 0; i < uNumStudents; i++)
uStudents[i] = readStudent(in);
Instructor[] uInstructors = new Instructor[uNumInstructors];
for(int i = 0; i < uNumInstructors; i++)
uInstructors[i] = readInstructor(in);
//Create array of possible TAs to pass into readCourse method
GradStudent[] gStudents = new GradStudent[uNumStudents];
for(int j=0; j<uStudents.length; j++) {
for(int i=0; i<uStudents.length; i++) {
if(uStudents[i] instanceof GradStudent)
gStudents[j] = (GradStudent) uStudents[i];
}
}
Course[] uCourses = new Course[uNumCourses];
for(int i = 0; i < uNumCourses; i++)
uCourses[i] = readCourse(in, uInstructors, gStudents, uStudents);
//Create University object
university = new University(uName, uTerm, uYear, uStudents, uInstructors, uCourses);
return university;
} catch (FileNotFoundException fe) {
fe.printStackTrace();
return null;
}
}
そして、私の EmptyFileException のコードは
public class EmptyFileException extends Exception {
String filename;
EmptyFileException() {
}
EmptyFileException(String filename) {
this.filename = filename;
}
public String toString() {
return "The file " + filename + " is empty.";
}
}
そして運転手は
public class TestDriver2 {
public static void main(String[] args) {
University ufl = University.readFromFile("university.txt");
if (ufl != null) {
System.out.println("\n--Printing out University info--");
System.out.println(ufl);
System.out.println("\n--Printing out Students info--");
Student[] students = ufl.getStudents();
for (Student s : students)
System.out.println("\n" + s);
}
}
}
どんな助けでも大歓迎です。不明な点がある場合は、最初の 2 つのファイルは正常にコンパイルされますが、ドライバーのみがコンパイルされません (これは先生から教えてもらいました)。
アップデート
節を追加しthrows
てコンパイルしましたが、先生がくれたコードを変更することはできませんでした。
ただし、今でもこのエラーが発生します。
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at University.readFromFile(University.java:174)
at TestDriver2.main(TestDriver2.java:8)