1

第一次在这里发帖,如果格式有问题,我会尝试修复它。无论如何,所以当我尝试运行我的驱动程序时,我一直在 java 中遇到这个错误。该程序的目标是写入然后从文件中读取,我写入文件很好,现在我试图从中读取,这是错误:

未报告的异常 EmptyFileException;必须被抓住或宣布被扔掉

大学 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);
            }
}

}

任何帮助,将不胜感激。如果不清楚,前两个文件编译得很好,只有驱动程序不会编译(这是我老师给我的)。

更新

添加了该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 回答