我在为学校作业写作的课程有问题。 基本上,在这段代码之前,我已经收到并处理了一堆信息,我将这些信息存储到一个对象数组中。现在我必须对这个数组进行排序(在排序后,我将按PRIORITY变量的顺序计算一些东西)。
假设我已经有一个名为input的MyClass []数组,它存储有限数量的MyClass对象。
MyClass[] priorityArray = new MyClass[input.length];
for (int i=0; i<priorityArray.length; i++) {
int maxIndex = 0;
int maxPrivilege = input[i].returnPrivilege();
for (int j=1; j<input.legnth; j++) {
int currentPrivilege = input[j].returnPrivilege();
if (currentPrivilege > maxPrivilege) {
maxPrivilege = currentPrivilege;
maxIndex = j;
}
}
priorityArray[i] = input[maxIndex];
input[maxIndex].setPrivilege(-900000000);
}
MyClass类,如果没什么特别的,但当然包含一个正确的构造函数,getter和setter方法以及一个整数变量“privilege”。
我在程序的最终测试中遇到错误,并且当程序将权限返回为“-900000000”时,它必须与此部分代码有关。 它甚至没有将输入数组中的某些MyClass实例写入priorityArray数组。
我该怎样清理它?帮助
答案 0 :(得分:1)
我完全重写了我的答案。
在这一行
priorityArray[i] = input[maxIndex];
您通过引用将对象从一个数组分配给另一个数组。这意味着只有一个对象,并在下一行中将值设置为-9000000。当然,priorityArray中的元素将具有相同的更改。要解决此问题,您需要在此处克隆您的对象。