所以最近我在尝试按照数组的升序排序时遇到了一个问题:
private PlaneSeat[] sortSeats() {
PlaneSeat[] tempAr = seat;
int temp, tempI, tempJ;
for (int i = 0; i < tempAr.length; i++) {
for (int j = 0; j < tempAr.length; j++) {
if (tempAr[i].isOccupied()) {
tempI = tempAr[i].getCustomerID();
tempJ = tempAr[j].getCustomerID();
if (tempI < tempJ) {
temp = tempI;
tempI = tempJ;
tempJ = temp;
}
}
}
}
return tempAr;
}
我要做的是将座位数组分配给临时数组,因为我不想覆盖原始数组中的值。然后,我试图比较临时数组中的customerID并根据customerID的升序排序。然后,从我的主要方法,我称之为:
tempAr = sortSeats();
for (int i = 0; i < tempAr.length; i++) {
if (tempAr[i].isOccupied()) {
System.out.println("SeatID " + tempAr[i].getSeatID()
+ " assigned to CustomerID "
+ tempAr[i].getCustomerID());
}
}
然而,有了这些,它没有根据customerID排序,它仍然返回原始数组。有什么想法吗?
提前致谢。
答案 0 :(得分:0)
这里你只是交换temp变量但没有将它设置为原始数组:
if (tempI < tempJ) {
temp = tempI;
tempI = tempJ;
tempJ = temp;
}
所以我认为你应该在数组中交换PlaneSeat:
if (tempI < tempJ) {
PlaneSeat tempSeat = tempAr[i];
tempAr[i] = tempAr[j];
tempAr[j] = tempSeat;
}
答案 1 :(得分:0)
temp,tempI等是原始变量,因此它们被重新分配但原始数组不会改变。你需要的是切换数组数据:
if (tempI < tempJ) {
tempAr[i] = tempj;
tempAr[j] = tempI;
}