尝试/捕捉&使用Java中的Scanner保存ArrayList

时间:2015-07-10 00:49:18

标签: java exception-handling save java.util.scanner

我不明白如何正确编码。我已经阅读了整个互联网和我的书,也许我过于复杂了。

我正在尝试将arraylist保存为.txt - 显然,当我按'1'添加(studentInfo)时它会给我异常,因为显然这是我要告诉它的。

我想要的是添加(),如果文件存在则覆盖它或打开它并再次保存。

如果这听起来令人困惑,我道歉。我自己很困惑。

case 1: 
                    try{
                    addStudent(studentInfo);
                    }
                    catch(FileNotFoundException ex){
                     ex.printStackTrace();
                     }
                    break;
                case 2: 
                    removeStudent(studentInfo);
                    break;
                case 3: 
                    display(studentInfo);
                    break;
                case 4:
                    load(studentInfo);
                case 0: 
                    System.out.println("Thank you for using the student database!");
                    System.exit(0);
            }
        }

   }  



    //ADD 
    private void addStudent(ArrayList<Student> studentInfo) throws FileNotFoundException  { 


         Scanner add = new Scanner(new File("students.txt"));

         while(add.hasNext()){    

         System.out.println("\nEnter the student's name: ");
         String name = add.nextLine();

         System.out.println("\nEnter the student's last name: ");
         String lastName = add.nextLine();

         System.out.println("\nEnter the student's major: ");
         String major = add.nextLine();

         System.out.println("\nEnter the student's GPA: ");
         String gpaNumber = add.nextLine();
         double gpa  = Double.parseDouble(gpaNumber);

         System.out.println("\nEnter the student's UIN: ");
         String uinNumber = add.nextLine();
         int uin = Integer.parseInt(uinNumber);

         System.out.println("\nEnter the student's NetID: ");
         String idName = add.nextLine();

         System.out.println("\nEnter the student's age: ");
         String years = add.nextLine();
         int age = Integer.parseInt(years);

         System.out.println("\nEnter the student's gender: Female or Male ");
         String gender = add.nextLine();

         Student newStudent = new Student (name, lastName, major, gpa, uin, idName, age, gender);

         if(studentInfo.size() <10){
         studentInfo.add(newStudent);
         System.out.println("Student information saved.");
         System.out.println();
         }
         else{
            System.out.println("Database is full");
         }

         }

         add.close();


   }

1 个答案:

答案 0 :(得分:0)

我的理解是你正在尝试构建一个新的学生对象,输入一个学生的信息,然后写下所有的学生&#39;信息到文件。

new File(students.txt)是告诉Java如何使用现有文件,它无法创建一个文件,以及导致错误的原因。如果您希望在解决该错误后查看代码的执行情况,则可以创建students.txt文件。

Scanner是输入处理程序,而不是文档编写器。因此,当使用File对象构建add扫描程序时,它实际上将读取该文件中已有的信息。它不会允许您写入文件。

此外,当您使用nextLine()时,它会遍历文件中的行,而不是写入(或接受)您的输入。

我建议阅读Java File I / O. Stack Overflow上有很多材料在线和这里。如果这是家庭作业,小心不要使用任何东西&#34;前沿&#34;如果你的老师想让你读完这本书。