gpt4 book ai didi

java - 尽管代码删除了 "0"值,但为什么列表中仍保留 "0"值?

转载 作者:行者123 更新时间:2023-12-01 19:44:22 27 4
gpt4 key购买 nike

我正在研究计算机科学 A 考试的样题,但无法弄清楚为什么以下问题的正确答案是正确的。

考虑以下方法。

public static void mystery(List<Integer> nums)
{
for (int k = 0; k < nums.size(); k++)
{
if (nums.get(k).intValue() == 0)
{
nums.remove(k);
}
}
}

假设列表值最初包含以下整数值。[0, 0, 4, 2, 5, 0, 3, 0]执行 Mystery(values) 后,values 会包含什么内容?

显示的正确答案是:[0, 4, 2, 5, 3]

为什么前 0 个仍保留在列表中?

最佳答案

第一个 0 保留下来,因为那实际上是 nums 中的第二个 0

k0时,测试成功并调用remove(0),删除第一个索引。这会将所有其他元素下移,因此列表现在为 [0, 4, 2, 5, 0, 3, 0]。但随后 k 会递增到 1,因此第二个 0(现在位于索引 0)会被跳过,而不是已删除。

其他 0 值已成功删除,就像第一个 0 已成功删除一样。此代码仅跳过两个连续 0 值中的第二。假设代码应该删除所有 0 值,这将是一个错误。

关于java - 尽管代码删除了 "0"值,但为什么列表中仍保留 "0"值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54028327/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com