我有课程课
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");
老师是一个列表,其中包含所有老师
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);
答案 0 :(得分:1)
第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));
或者由二传手创建后
Course course = new Course();
course.setName(name);
course.setYears(years);
course.setMaxSturdents(maxStudents);
course.setTeacher(teacher);
courses.add(course);
或组合
答案 1 :(得分:0)
最后一个问题,为什么.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();