2 回答
TA贡献1946条经验 获得超4个赞
第一种方法,第 8 行。为什么要pos在i. int pos = list.indexOf(i);会给-1。
另外,在这个循环中
for ( int j = 0 ; pos < j ; j++)
{
current.setTimesMoved(1 + current.getTimesMoved());
}
你总是指向数组列表中的同一个元素。
相反,您可能希望像下面这样对其进行编程:
for ( int j = 0; j<i; j++)
{
Car car = list.get(j);
car.setTimesMoved(1 + car.getTimesMoved());
}
TA贡献1842条经验 获得超21个赞
您的方法中有以下问题,
首先你得到一个整数而不是对象的索引。
您的内部 for 循环条件是错误的。
您总是增加当前对象的值而不是以前的值。
我已经用你的方法纠正了它们。使用以下一种,
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;
}
}
}
添加回答
举报