【发布时间】:2018-04-02 15:55:17
【问题描述】:
Java 新手,在网上看到了这个例子。函数 removeZeros 应该删除 ArrayList 中为零的所有整数,但由于某种原因,如果它们是连续的,它不会删除它们。我对此感到非常困惑,因为我不明白为什么它没有严格删除数组中所有出现的 0 。原因可能很明显,但我就是看不到...
public static void main(String args[])
{
List<Integer> a = new ArrayList<Integer>();
a.add(0);
a.add(0);
a.add(4);
System.out.println(a); // prints [0 , 0 , 4]
removeZeros(a);
System.out.println(a); // prints [0 , 4] ?? why not just [4]?
}
// function to remove all zeros from an integer list
public static void removeZeros(List<Integer> nums)
{
for (int i = 0; i < nums.size(); i++)
if (nums.get(i) == 0)
nums.remove(i);
}
感谢任何见解。
【问题讨论】:
-
for循环应该反向迭代。
-
当你遍历一个 List 时,你应该以相反的顺序进行
-
"在网上看到了这个例子" 建议你找更好的例子来学习。
-
@AndyTurner 这是我在网上找到的计算机科学考试题。抱歉,我猜“示例”是一个误导性词:0
-
@alfasin 该副本不相关。