啊?我不是已经回答过了吗?我回答被删了?
我再贴一次:
你的程序写的太乱了。。汗。。。
for(int i = 0; i <5; i++)
{
temp.set_course_ID("200"+i);
student[j].set_stu_course(temp, i);
}
}
这里就已经写错了,比如j = 0的时候,你每次都是将2004传给student[0],虽然你用了for循环,但是你没发现每次循环体都是要执行5遍吗?第一遍先将2000传给student[0],再将2001还是传给student[0],所以每次循环体结束时,student的courseID都是2004..
你为什么ID都用string类型?怎么不用int类型。。。而且你为什么要student类去继承课程类?之间并没有明确的is-A关系。。
我简单的重写了一下程序:
Course类:
public class Course {
private int courseID;
public void setCourseID(int id){
this.courseID = id;
}
public int getCourseID(){
return this.courseID;
}
public String toString(){
return courseID + " ";
}
}
Student类:
import java.util.*;
public class Student {
private int studentID;
private ArrayList courseList;
public void setStudentID(int id){
this.studentID = id;
}
public int getStudentID(){
return this.studentID;
}
public void setCourseList(ArrayList list){
this.courseList = list;
}
public ArrayList getCourseList(){
return this.courseList;
}
}
InputGrade类:
import java.util.*;
public class InputGrade {
public static void main(String[]args){
Student [] students = new Student[2];
for(int i = 0;i < 2;i++){
Student student = new Student();
ArrayList
student.setStudentID(i);
for(int j = 0;j < 5;j++){
Course course = new Course();
course.setCourseID(200+j);
list.add(course);
}
student.setCourseList(list);
students[i] = student;
}
for(int i = 0;i < 2;i++){
System.out.print("Student"+i+" has courses: ");
System.out.println(students[i].getCourseList());
}
}
}
输出:
Student0 has courses: [200, 201, 202, 203, 204]
Student1 has courses: [200, 201, 202, 203, 204]
有不清楚的再问我好了
问题出在这里:for(int i = 0; i <5; i++)
{
temp.set_course_ID("200"+i);
student[j].set_stu_course(temp, i);
}
首先你实际上只new了一个CollegeCourse对象:CollegeCourse temp = new CollegeCourse();
然后再循环中每循环一次改的的是同一个对象的courseID:temp.set_course_ID("200"+i);
所以每进行一次循环,传递过去都是同一个CollegeCourse对象temp:student[j].set_stu_course(temp, i);
不同的只是该对象里courseID属性值变了而已。
只要做如下修改:将main方法体内的CollegeCourse temp = new CollegeCourse();剪切到
for(int i = 0; i <5; i++)
{
CollegeCourse temp = new CollegeCourse();
temp.set_course_ID("200"+i);
student[j].set_stu_course(temp, i);
}
}
就ok了。
还有就是楼上说的,CollegeCourse和Student的关系是Has-A,所以student不能继承CollegeCourse,只要把CollegeCourse作为student的属性就可以了。
switch(num)
{
case 0 :
return subject[0];
break;
case 1 :
return subject[1];
break;
case 2 :
return subject[2];
break;
case 3 :
return subject[3];
break;
case 4 :
return subject[4];
break;
default :
break;
}
//switch语句每一个case执行完以后都要break的
是引用类型,所以不能这样吗,这是我的理解,不对的地方请指教