java - 有人可以指导我解决这个逻辑错误吗?

标签 java

我试图删除 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/

相关文章:

java - 如何获取图像特定像素的颜色? - java

java - 如何确保目录中的图像在更改后刷新?

java - 错误 : java. lang.InternalError : Failed remote launch: com. sun.jdi.CommandLineLaunch

java - 如何使用 JNDI 将 Java 应用程序连接到数据库?

java - 使用spring任务调度处理多个文件时如何保持一致性?

Java EE 和 Spring MVC "bootstrap"/在服务器启动时运行代码

Javamail 和 TLS? (不是 STARTTLS)

java - 如何配置logging.properties将内容放入Java类中(没有包装模式)?

java作业与单词替换

java仿射变换正确顺序