private static void modifyStudent() throws IOException { Scanner scanner = new Scanner(System.in); System.out.println("请输入要修改的学生姓名:"); String name = scanner.nextLine(); List<Student> students = readStudentsFromFile(); for (Student student : students) { if (student.getName().equals(name)) { System.out.println("请输入新的学生姓名:"); String newName = scanner.nextLine(); System.out.println("请输入新的学生年龄:"); int newAge = scanner.nextInt(); scanner.nextLine(); System.out.println("请输入新的学生性别:"); String newGender = scanner.nextLine(); student = new Student(newName, newAge, newGender); } } writeStudentsToFile(students); }成功执行了但为什么没有实现
时间: 2024-01-12 12:03:40 浏览: 84
可能是因为在遍历 `students` 列表时,虽然修改了 `student` 对象的值,但是并没有将修改后的对象重新放回 `students` 列表中。可以考虑使用一个临时的列表来存储修改后的对象,再将临时列表中的元素复制回原列表中。可以尝试将代码修改如下:
```
private static void modifyStudent() throws IOException {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要修改的学生姓名:");
String name = scanner.nextLine();
List<Student> students = readStudentsFromFile();
List<Student> updatedStudents = new ArrayList<>(); // 临时列表
for (Student student : students) {
if (student.getName().equals(name)) {
System.out.println("请输入新的学生姓名:");
String newName = scanner.nextLine();
System.out.println("请输入新的学生年龄:");
int newAge = scanner.nextInt();
scanner.nextLine();
System.out.println("请输入新的学生性别:");
String newGender = scanner.nextLine();
student = new Student(newName, newAge, newGender);
}
updatedStudents.add(student); // 将修改后的对象放入临时列表中
}
writeStudentsToFile(updatedStudents); // 将临时列表中的元素复制回原列表中
}
```
阅读全文