Java 方法在输入字符串后输出 null

Java method outputs null after input String

美好的一天。这是一道作业题。我需要使用课程名称使用构造函数创建课程对象。可以使用 addStudent (String student) 方法添加学生,使用 getStudents() 方法 return 该课程的所有学生。 我的测试程序要求我显示该课程的学生人数和学生姓名,如下所示: 编程II课程学生人数:6

  1. 茜蒂阿米娜穆罕默德
  2. 哈林再纳阿比丁
  3. 杰森·林
  4. ...
  5. ... 数据库系统课程的学生人数:15
  6. 法蒂玛艾哈迈德
  7. 吴莎拉 ...

但是,当我 运行 我的测试程序时,名称输出为空,我不明白为什么。 下面是我的代码:

public class Course {
    private String name; 
    private int numberOfStudents; 
    private String[] students = new String [100];
    
    
    public Course() {
    }
    
    public Course(String name) {
        this.name = name;
    }
    
    public void addStudent(String student) {
        students [numberOfStudents] = student;
    }
    
    
    public String[] getStudents() {
        return students;
    }
    
    public int getNumberOfStudents() {
        return numberOfStudents;
    }
    
    public void setNumberOfStudents(int NumberOfStudents) {
        this.numberOfStudents = NumberOfStudents;
    }
    
    public String getName() {
        return name;
    }
}

public class TestCourse {

    public static void main(String[] args) {
    
        Course course1 = new Course("Programming II");
        course1.setNumberOfStudents(6);

        System.out.println("Number of students in Programming II Course: "  +course1.getNumberOfStudents());
        String[] students = course1.getStudents();
        course1.addStudent("Siti Aminah Muhammad");
        course1.addStudent("Halim Zainal Abidin");
        course1.addStudent("Jason Lim");
        for (int i= 1; i<course1.getNumberOfStudents(); i++)
            System.out.println( +i+ "." +students[i]);
        
        Course course2 = new Course("Database Systems");
        course2.addStudent("Fatimah Ahmad");
        course2.addStudent("Sarah Goh");
        course2.setNumberOfStudents(15);
        System.out.println("Number of students in Database Systems Course:" +course2.getNumberOfStudents());
        for (int i= 1; i<course2.getNumberOfStudents(); i++)
            System.out.println( +i+ "." +students[i]);
        
    }
  }

This is the output that I have.

在您的方法 addStudent() 中,您将学生添加到 [numberOfStudents] 的数组中。这样做,您的学生都被放置在阵列中的相同位置(第一个测试 6 个,第二个测试 15 个)。这就是为什么你有一个学生的唯一地方是 6。如果你想让他们在 1、2、3 等,你需要在每次添加一个时设置你的新 numberOfStudent 以确保你的下一个学生会在最后一个。

如果你不想每次都这样做,你可以简单地添加this.numberOfStudent++;在你的 addStudent 方法中。