我应该如何在创建新课程时将老师添加到新课程中?
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);
- 定义教师与课程的关系
- 你将老师添加到课程中,但对我来说,没有老师就没有课程,所以老师应该有一个课程列表(但这可能超出范围)
- 从用户那里获取新课程的信息
- 确定课程的教师
- 创建课程
第 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();
我有课程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);
- 定义教师与课程的关系
- 你将老师添加到课程中,但对我来说,没有老师就没有课程,所以老师应该有一个课程列表(但这可能超出范围)
- 从用户那里获取新课程的信息
- 确定课程的教师
- 创建课程
第 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();