1

初めて投稿しますが、フォーマットが間違っている場合は、修正を試みます。とにかく、ドライバーを実行しようとすると、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) 
4

1 に答える 1

3

変化する

public static void main(String[] args) {

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

(またはcatch、コードに適切なステートメントを挿入します。)

于 2012-11-08T01:54:11.470 に答える