2 回答

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊
第一種方法,第 8 行。為什么要pos在i. int pos = list.indexOf(i);會(huì)給-1。
另外,在這個(gè)循環(huán)中
for ( int j = 0 ; pos < j ; j++)
{
current.setTimesMoved(1 + current.getTimesMoved());
}
你總是指向數(shù)組列表中的同一個(gè)元素。
相反,您可能希望像下面這樣對(duì)其進(jìn)行編程:
for ( int j = 0; j<i; j++)
{
Car car = list.get(j);
car.setTimesMoved(1 + car.getTimesMoved());
}

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超21個(gè)贊
您的方法中有以下問(wèn)題,
首先你得到一個(gè)整數(shù)而不是對(duì)象的索引。
您的內(nèi)部 for 循環(huán)條件是錯(cuò)誤的。
您總是增加當(dāng)前對(duì)象的值而不是以前的值。
我已經(jīng)用你的方法糾正了它們。使用以下一種,
public void carDepart() {
for (int i = 0; i < list.size(); i++) {
Car current = list.get(i); // get next car
if (current.getStatus().equals("DEPART")) {
/* You can remove below line and replace pos with i in your inner loop.
Since the current object position will be same as i */
int pos = list.indexOf(current);
for (int j = 0; j < pos; j++) {
list.get(j).setTimesMoved(1 + current.getTimesMoved());
}
list.remove(i);
return;
}
}
}
添加回答
舉報(bào)