我不明白如何正确编码。我已经阅读了整个互联网和我的书,也许我过于复杂了。
我正在尝试将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();
}
答案 0 :(得分:0)
我的理解是你正在尝试构建一个新的学生对象,输入一个学生的信息,然后写下所有的学生&#39;信息到文件。
new File(students.txt)
是告诉Java如何使用现有文件,它无法创建一个文件,以及导致错误的原因。如果您希望在解决该错误后查看代码的执行情况,则可以创建students.txt文件。
Scanner是输入处理程序,而不是文档编写器。因此,当使用File对象构建add
扫描程序时,它实际上将读取该文件中已有的信息。它不会允许您写入文件。
此外,当您使用nextLine()
时,它会遍历文件中的行,而不是写入(或接受)您的输入。
我建议阅读Java File I / O. Stack Overflow上有很多材料在线和这里。如果这是家庭作业,小心不要使用任何东西&#34;前沿&#34;如果你的老师想让你读完这本书。