Массив объектов -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;