这个while循环在整数集合上的结果是什么?

时间:2014-03-31 00:28:27

标签: java

感谢您的时间。我在高中计算机科学辅导学生,而且对Java有点生疏。根据答案键,以下练习题的答案是E.

为什么答案应该是E?

非常感谢任何见解。谢谢。

示例问题:请考虑以下实例变量和方法。

 private List<Integer> nums;

 / ** Precondition: nums.size > 0   */
 public void numQuest()
 {
     int k = 0;
     Integer zero = new Integer(0);
     while (k < nums.size())
     {
         if (nums.get(k).equals(zero))
             nums.remove(k);

         k++;
     }
 }

假设List nums最初包含以下内容 整数值。

[0,0,4,2,5,0,3,0]

执行numQuest会导致List nums包含什么?

(a)[0,0,4,2,5,0,3,0]

(b)[4,2,5,3]

(c)[0,0,0,0,4,2,5,3]

(d)[3,5,2,4,0,0,0,0]

(e)[0,4,2,5,3]

1 个答案:

答案 0 :(得分:7)

在循环开始时

k = 0
nums = [0, 0, 4, 2, 5, 0, 3, 0]

(忘记符号)

nums[k] == nums[0] == 0

所以我们必须删除它。第一次迭代后

k = 1
nums = [0, 4, 2, 5, 0, 3, 0] // the first 0 was removed

现在

nums[k] == nums[1] == 4

所以我们不删除它。您基本上跳过了原始列表中的第二个元素,因为您没有考虑第一个元素被删除。这是您在迭代时通常无法从集合中删除的一个原因。