여기에 객체를 벡터에 추가하고 요소를 벡터에서 다시 가져 오려고합니다. for 루프 내에서 벡터는 모든 3 객체의 세부 정보를 제공합니다. 하지만 루프 외부에서 개체를 가져 오려고합니다. 그러나 세 번째 객체에 대한 정보 만 제공합니다.벡터의 모든 요소가 마지막 객체로 대체됩니다. - java
static Vector<Student> vector = null;
static Student student= null;
public static void AskStudentDetails(){
Scanner input = new Scanner(System.in);
student = new Student();
vector = new Vector<Student>();
for(int i=0; i<MAX_STUDENT; i++){
System.out.print("Coursework 01 Marks : ");
student.setCoursework1(input.nextInt());
vector.addElement(student); //add object to the vector
Student mm = vector.elementAt(0);
System.out.println(mm.getCoursework1());
}
input.close();
student = vector.elementAt(1);//assign to the object student
System.out.println(student.getCoursework1()); // always print only the value of third object
}
Student.class 공용 클래스 학생은 내부 루프에 대한의 java.io.Serializable을 {
private int coursework1;
public int getCoursework1() {
return coursework1;
}
public void setCoursework1(int coursework1) {
this.coursework1 = coursework1;
}
}
매번 동일한 '학생'개체에 대한 참조를 추가하고 있습니다. 루프 안에서'student = new Student()'를 움직여 로컬 변수로 만드십시오.이 질문은 다른 많은 사람들의 속임수이지만, 지금 찾을 수있는 에너지가 없습니다 ... –