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