感谢您的时间。我在高中计算机科学辅导学生,而且对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]
答案 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
所以我们不删除它。您基本上跳过了原始列表中的第二个元素,因为您没有考虑第一个元素被删除。这是您在迭代时通常无法从集合中删除的一个原因。