好的,所以这是我主要方法的一部分:
public class Driver {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
//Variables to place data attributes of object in
String teacherName;
int teacherId;
double basicSalary;
double extraPaymentRate;
int numOfCourses=100;
Course []coursesTaught=new Course[numOfCourses];
String courseName;
int courseId;
int y;
System.out.println("Please enter number of teachers:");
y=scan.nextInt();
Teacher []teacherArray=new Teacher[y];
for(int i=0;i<y;i++) {
System.out.println("Enter teacher’s name, id, basic salary, and extra payment rate: ");
teacherName=scan.next();
teacherId=scan.nextInt();
basicSalary=scan.nextDouble();
extraPaymentRate=scan.nextDouble();
System.out.println("Enter number of courses taught: ");
numOfCourses=scan.nextInt();
for(int j=0;j<numOfCourses;j++) {
System.out.println("Enter course names and IDs:");
courseName=scan.next();
courseId=scan.nextInt();
coursesTaught[j]=new Course(courseName,courseId);
}
teacherArray[i]=new Teacher(teacherName,teacherId,basicSalary,extraPaymentRate,numOfCourses,coursesTaught);
}
现在我的问题是,每次我添加一个新的教师对象时,我添加到该教师对象的新课程将覆盖最后一个。 所以老师都有相同的课程
这是老师班
public class Teacher {
private String name;
private int id;
private double basicSalary;
private double extraPaymentRate;
public static int numOfCourses;
public Course []coursesTaught= new Course[numOfCourses];
public Teacher() {
}
public Teacher(String name,int id,double basicSalary,double
extraPaymentRate,int numOfCourses,Course []coursesTaught) {
this.name=name;
this.id=id;
this.basicSalary=basicSalary;
this.extraPaymentRate=extraPaymentRate;
Teacher.numOfCourses=numOfCourses;
this.coursesTaught=coursesTaught;
}
//setter and getter methods here
这是课程课程
public class Course {
public String name;
public int id;
public Course() {
}
public Course(String name,int id) {
this.name=name;
this.id=id;
}
我还在抓住对象的概念。有什么帮助吗?
答案 0 :(得分:3)
Course []coursesTaught=new Course[numOfCourses];
在循环之前声明
因此,您只需实例化一次,并且所有创建的Teacher
实例在循环中使用相同的内容:
Course []coursesTaught = new Course[numOfCourses];
...
Teacher []teacherArray = new Teacher[y];
for(int i=0;i<y;i++) {
teacherArray[i] = new Teacher(teacherName,teacherId,basicSalary,extraPaymentRate,numOfCourses,coursesTaught);
...
}
在创建和填充每个coursesTaught
实例的循环中声明Teacher
,以便在每次迭代时实例化coursesTaught
,从而将其附加到当前创建的Teacher
实例:
...
Teacher []teacherArray=new Teacher[y];
for(int i=0;i<y;i++) {
Course []coursesTaught = new Course[numOfCourses];
teacherArray[i] = new Teacher(teacherName,teacherId,basicSalary,extraPaymentRate,numOfCourses,coursesTaught);
...
}