我试图删除 arraylist deck
中的所有元素,但由于某种原因 deck.size()
应该是 52 返回 26 并且只返回 26 个元素已被删除。
public void remove()
{
int k = 0;
while(k < deck.size())
{
deck.remove(0);
k++;
}
}
我在 main
中调用了 numberOfCards()
,它返回 deck.size()
并返回 52。所以我不知道为什么删除中的deck.size()
仅返回26。
最佳答案
因为计算机正在按照您的指示执行操作。
- 首先,它设置
k
到 0。 - 然后它调用
deck.size()
返回 52。0 < 52
,因此进入循环。 - 然后它会从
deck
中删除第一个元素. - 然后它递增
k
(将其设置为 1)。 - 然后它调用
deck.size()
返回 51。1 < 51
,所以再次进入循环。 - 然后它会从
deck
中删除第一个元素. - 然后它递增
k
(将其设置为 2)。 - 然后它调用
deck.size()
返回 50。2 < 50
,所以再次进入循环。 - ...
- 然后它递增
k
(将其设置为 25)。 - 然后它调用
deck.size()
返回 27。25 < 27
,所以再次进入循环。 - 然后它会从
deck
中删除第一个元素. - 然后它递增
k
(将其设置为 26)。 - 然后它调用
deck.size()
返回 26。26 < 26
是不 true,因此它跳到循环末尾,即使deck
中还剩下 26 个元素。 .
关于java - 有人可以指导我解决这个逻辑错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28033683/