JAVA用scanner输入值进对象数组后是最后一位数

2025-06-22 14:19:45
推荐回答(1个)
回答1:

我不知道你student类是怎么写的 按道理来说 在n[i].id=s.nextInt(); 这里应该会报空指针错误。

然后你既然没报,那就算了。
然后你的调换位置(建议min=a[i]不要写成min=0)

min = c[i].id;
c[i] = c[j];
c[j].id = min;
这样写的错误的
错在第二行 你应该让c[i].id = c[j].id; 你原来这样做只会把c[j]的引用赋给c[i]让他们指向同一个实体。
所以可以试想一下,
没有比1小的 所以过。
没有比2 小的 所以过。
有比3小的 min=3 然后3变成了2的引用地址 也就是c[2]变成了c[9]的内容 变成了2
然后c[9].id=3 使 c[9]变成3 同时因为c[2]也是指向该地址 也会变成3
所以就变成了1 2 3 4 5 6 7 4 3
反正错在第二行