Массив объектов -java-

У меня есть упражнение, которое я пишу класс CourseManager5, который хранит список объектов учащихся в данном классе. У каждого студента есть идентификатор, имя, оценка. Класс позволяет пользователю добавлять ученика и отображать данные учеников. Вот диаграмма UML: введите описание изображения здесь Методы:

  • CourseManager5: конструктор, который инициализирует атрибуты и создает массив студентов размером 100.
  • getNStudents: возвращает текущее количество студентов.
  • addStudent: добавляет ученика с заданным объектом в список. Если курс заполнен, выводится сообщение об ошибке: "ОШИБКА: КУРС ЗАПОЛНЕН".
  • displayStudent: отображает все данные учащегося по индексу i. Напишите основной класс TestCourseManager5 с методом main, который будет выполнять следующие действия:
    • Создает объект CourseManager5.
    • Затем он добавляет 3 учеников, читая их идентификаторы, имена и оценки от пользователя.
    • Затем отображаются все ученики в классе.

Я пишу программу.. но у меня возникла проблема с методом displayStudent.. Я не знаю, почему!

Еще одна вещь: правильный метод addStudent??

Вот моя программа:

import java.util.Scanner;
public class TestCourseManager5 {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        courseManager5 cm = new courseManager5();
        int num =0;
        for(int i =0; i < 3;i++){
            System.out.println("Please enter the ID, name, and score of student "+num+":");
            int id = s.nextInt();
            String name = s.next();
            double score = s.nextDouble();
            student su = new student(id, name, score);
            cm.addStudent(su);
            num++;}

        System.out.println("Student are: ");
        for(int i=0;i<cm.getNStudent();i++){
        cm.displayStudent(i);
        }}}

public class student {
    private int id;
    private String name;
    private double score;                   
    public student(int id, String name, double score){
        this.id = id;
        this.name = name;
        this.score = score;}

    public int getId(){
        return id;}

    public String getName(){
        return name;}

    public double getScore(){
        return score;}}

public class courseManager5 {
private student []students;
private int nStudent;
public static int MAX_SIZE = 100;

public courseManager5(){
    students = new student[MAX_SIZE];
    nStudent = 0;}

/ addStudent добавляет ученика с данным объектом в список. Если курс заполнен, выводится сообщение об ошибке: "ОШИБКА: КУРС ПОЛНЫЙ" мой метод правильный?/

public void addStudent (student newStudent){ 
    if(nStudent < MAX_SIZE)
        nStudent++;
    else
        System.out.println("ERROR: COURSE IS FULL");}

public int getNStudent(){
    return nStudent;}

public void displayStudent(int i){// my problem here !
        System.out.println(students[i].getId()+", "+students[i].getName()+", "+students[i].getScore());
    }
}

2 ответа

Решение

Ваша проблема в addStudent(). Вы никогда не добавляли студентов в массив. Таким образом, это приводит к нулю в displayStudent(). Попробуй это:

public void addStudent (student newStudent){ 
    if(nStudent < MAX_SIZE)
        students[nStudent++] = newStudent;
    else
        System.out.println("ERROR: COURSE IS FULL");}

В вашем addStudent метод, которым вы не добавляете студента, переданного в массив. Попробуй это:

students[nStudent] = newStudent;
Другие вопросы по тегам