我应该如何在创建新课程时将老师添加到新课程中?

How should I add teacher to new course, while creating it?

我有课程class

public class Course implements Comparable<Course > {
private String nazwa;
private Integer lata;
private Teacher teacher;
private Student[] students;


public Course (String name, int years, int maxStudents, Teacher teacher) {
    this.name = name;
    this.years = years;
    students = new Student[maxStudents];
    this.teacher = teacher;

}

我不确定这样做是否正确

public void setTeacher(Teacher teacher)
{
    this.teacher = teacher;
}

然后我有一些代码允许用户创建新课程。我先问一些基本信息

System.out.print("ask for name");
String name= scan.next();
System.out.print("ask for years");
int years= scan.nextInt();
System.out.print("ask for maxStudents");
int maxStudents = scan.nextInt();

我正在尝试为新课程添加老师。教师有唯一 ID

Course course;
System.out.print("Choose teacher:\n");

teachers 是一个包含所有教师的列表

for(Teacher t : teachers)
{
System.out.print(t.getName() + " - " + t.getAcademicDeggre() +"\n");
}

course.setTeacher(Teacher ?);

courses.add(new Course(name, years, maxStudents, teacher?);

@解决方案:

int choice= scan.nextInt() - 1;
String ID= teachers.get(choice).getID();
Teacher teacher = getTeacherForCourse(teachers, ID);
  1. 定义教师与课程的关系
    • 你将老师添加到课程中,但对我来说,没有老师就没有课程,所以老师应该有一个课程列表(但这可能超出范围)
  2. 从用户那里获取新课程的信息
  3. 确定课程的教师
  4. 创建课程

第 3 步

private Teacher getTeacherForCourse(List<Teacher> teachers, long id) {
    for(Teacher teacher : teachers)
    {
        // Return the teacher if match the criteria
        if(teacher.getId() == id)
        {
            return teacher;
        }
    }
    return null; // or throw exception
}

或 java 8

private Optional<Teacher> getTeacherForCourse(List<Teacher> teachers, long id) {
    return teachers.stream()
            .filter(teacher -> teacher.getId() == id)
            .findFirst();
}

第 4 步

Teacher teacher = getTeacherForCourse(teachers, 9454);
courses.add(new Course(name, years, maxStudents, teacher);

基本上你可以通过构造函数在创建时设置属性

courses.add(new Course(name, years, maxStudents, teacher));

或由 setter 创建后

Course course = new Course();

course.setName(name);
course.setYears(years);
course.setMaxSturdents(maxStudents);
course.setTeacher(teacher);

courses.add(course);

或组合

最后一个问题,为什么.getID被忽略了?教师具有 ID 属性,即字符串。

我正在打印每个老师

for(int i = 0; i < teachers.size(); i++){
   System.out.print(i + teachers.get(i).getName() + " " + teachers.get(i).getSurName() + " - " + teachers.get(i).getAccademicDeggre());
  }

然后用户选择老师,按号码,他想添加到课程

int choise = scan.nextInt();

接下来我想从列表中具有该索引的老师处获取 ID

teachers.get(choise).getID();