有人可以指导我完成这个逻辑错误吗?

PTh*_*Guy 0 java

我试图删除arraylist中的所有元素,deck但由于某种原因deck.size()应该是52返回26并且只删除了26个元素.

public void remove()
{
    int k = 0;
    while(k < deck.size())
    {
        deck.remove(0);
        k++;
    }   
}
Run Code Online (Sandbox Code Playgroud)

我打电话给numberOfCards()main返回deck.size(),并返回52,所以我不知道为什么deck.size()在只取出返回26.

use*_*751 6

因为计算机完全按照你的要求去做.

  • 首先,它设置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不是真实的,所以它跳到循环的结束,即使还有留在26个元素deck.