与其他类的数组 - 对象 - Java

Muh*_*lan 0 java arrays class

我有3类:Course,CourseEntryTranscript.在成绩单中,我有一个添加课程的功能,如:

public class Transcript {
    CourseEntry coursestaken[] = new CourseEntry[6];

    public void addCourse(Course course)
    {
        coursestaken[lastIndexOf(getCoursestaken())] = new CourseEntry(course);
    }
    (lastIndexOf gives me the empty array index - it's working on)
Run Code Online (Sandbox Code Playgroud)

在我的CourseEntry:

public class CourseEntry {
    Course course;
    char grade = 'I';

    public CourseEntry(Course course)
    {
        this.course = course;
    }
Run Code Online (Sandbox Code Playgroud)

在我的Course:

public  class Course {
    int courseNumber,credits;
    String courseName;

    public Course addNewCourse(int courseNumber, int credits, String courseName)
    {
        this.courseNumber = courseNumber;
        this.credits = credits;
        this.courseName = courseName;

        return this;
    }
Run Code Online (Sandbox Code Playgroud)

在我的主要:

Transcript t = new Transcript();
Course course = new Course();

Course matematik = course.addNewCourse(1, 2, "Matematik");
t.addCourse(matematik);

Course turkce = course.addNewCourse(1, 4, "Türkçe");
t.addCourse(turkce);
Run Code Online (Sandbox Code Playgroud)

但是如果我循环使用了coursestaken数组,它会为所有数组打印最后插入的索引.

我怎么解决这个问题?

谢谢

Ale*_*rlo 7

您需要Course为每个课程创建一个新对象,您的addNewCourse方法只会改变当前Course对象.修改Course如下:

public class Course {
    private final int courseNumber;
    private final int credits;
    private final String courseName;

    public Course(int courseNumber, int credits, String courseName) {
        this.courseNumber = courseNumber;
        this.credits = credits;
        this.courseName = courseName;
    }

    public int getCourseNumber() {
        return courseNumber;
    }

    public int getCredits() {
        return credits;
    }

    public String getCourseName() {
        return courseName;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后使用以下内容:

Transcript t = new Transcript();

Course matematik = new Course(1, 2, "Matematik");
t.addCourse(matematik);

Course turkce = new Course(1, 4, "Türkçe");
t.addCourse(turkce);
Run Code Online (Sandbox Code Playgroud)