Как мне добавить учителя к новому курсу при его создании? - PullRequest
1 голос
/ 21 мая 2019

У меня есть курс курса

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();

Я пытаюсь добавить учителя в новый курс.У учителя есть уникальный идентификатор

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);

Ответы [ 2 ]

1 голос
/ 21 мая 2019
  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));

или после создания сеттерами

Course course = new Course();

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

courses.add(course);

или комбинацией

0 голосов
/ 22 мая 2019

Последний вопрос, почему .getID игнорируется? Учитель имеет идентификатор атрибута, который является строкой.

Я печатаю каждого учителя

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();

И затем я хочу получить идентификатор от учителя, у которого этот индекс есть в списке

teachers.get(choise).getID();
...