public void student(郭襄 student){
for (int i = 0; i < a.length; i++) {
if (a[i]==null){
a[i]=student;
break;
}
}
}
public void showstudent(){
for (int i = 0; i < a.length; i++) {
if (a[i]!=null){
System.out.println("学号:"+a[i].sno+"\t名字:"+a[i].name+"\t年龄:"+a[i].age);
}
}
}
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
郭襄 a=new 郭襄();
a.denglu();
do {
System.out.print("请输入操作序号:");
int netx= input.nextInt();
if (netx==1){
System.out.print("请输入学生学号:");
a.sno= input.nextInt();
System.out.print("请输入学生姓名:");
a.name= input.next();
System.out.print("请输入学生年龄:");
a.age= input.nextInt();
a.student2(a);
}else if (netx==2){
System.out.println("本班学生列表:");
a.showstudent();
}else if (netx==3){
System.exit(0);
}else {
System.out.println("操作序号无效!");
}
}while (true);
}
}
你在25行到31行无论怎么改名字,也只是对20行定义的郭襄进行修改,你创建了一个郭襄,并在第一轮循环将其命名为xx,并储存在了a列表的[0],在第二轮循环中,你又将原本那个叫xx的郭襄对象进行修改,改为xz,并赋给了a的[1]中,但是怎么做还是无法改变这是同一个郭襄的事实,所以a[0]中的郭襄本质就是a[1]中的郭襄,自然就会输出一样的名字了