在不知道名称的情况下修改列表的类成员



我想要什么 我的标题可能不清楚,但我有一个程序,用户可以在其中创建学生(带有姓名、年龄和程序)。从 Main() 中,系统会提示用户提问,并可以查看当前学生并添加新学生。我想添加修改现有学生的选项,但我不知道在创建后如何引用他们。

我有什么在这里,我创建空列表:

public static List<Student> populate(){
    List<Student> students = new ArrayList<Student>();
    return students;    
}

当用户想要在循环中添加学生时,main 调用此方法。

public static void addStudents(List<Student >students){
    int Answer = 1;
    while ( Answer == 1){
        Scanner reader = new Scanner(System.in);
        //not shown: user enters student's name (NewName) age (NewAge) and program (NewProgram)
        Student nextStudent = new Student(NewName);
        students.add(nextStudent);
        nextStudent.age = NewAge;
        nextStudent.program = NewProgram;   
        System.out.println("Do you want to add another student? Press 1 for yes and 2 for no.");
        Answer = reader.nextInt();
    }
}

我所知道的

当我知道学生的名字时,我知道如何更改学生的属性。例如,当我创建一个学生并添加他的年龄时,我写 nextStudent.age = NewAge;但是,由于在填充我的列表后,它们都被称为NextStudent,我不确定如何选择特定的学生并更改他们的属性。

您首先需要编写一个方法,该方法将从列表中返回与名称(或其他任何内容)匹配的学生对象,例如

public Student findByName(List<Student> students, String name){
    for(Student student : students){
        if(student.getName().equals(name)){
            return student;
        }
    }
    return null;
}

完成此操作后,您可以从editStudent()方法调用此方法,如果它返回一个object(即 not null ),您可以执行student.setName(""),这将更改名称。如果它返回 null,那么您可以只显示一条消息,指出"找不到具有该名称的学生"。

最新更新