我的Arraylist(样本)包含: 答:[0,6,0,6,0,4,8,8,2]
我想删除列表开头出现的所有0。 预期答案: 答:[6,0,6,4,8,8,2]
我正在尝试:
for(i=0; i<A.size(); i++){
if(A.get(i) == 0)
A.remove(i);
else break;
}
我的输出: 答:[6、6、4、8、8、2]
我相信在执行A.remove()操作时索引会移动,因此当循环第二次运行时,第二个零的索引将变为1(以前为2),因此也将其删除。
我应该使用什么替代方法?
答案 0 :(得分:1)
问题在于,从头开始删除某项的同时,您的i
会增加。因此,在第二个循环中,您正在查看索引1,但是索引0现在具有一个您从未查看过的值。这对您来说很有用,因为开始时只有一个0,但是会失败,[0, 0, 6, 0]
。
相反,使用while
并仅查看索引0
:
while (A.size() > 0 && A.get(0) == 0) {
A.remove(0);
}