我有3类:Course,CourseEntry和Transcript.在成绩单中,我有一个添加课程的功能,如:
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数组,它会为所有数组打印最后插入的索引.
我怎么解决这个问题?
谢谢
您需要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)