Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有人能引导我克服这个逻辑错误吗?_Java - Fatal编程技术网

Java 有人能引导我克服这个逻辑错误吗?

Java 有人能引导我克服这个逻辑错误吗?,java,Java,我试图删除arraylistdeck中的所有元素,但出于某种原因deck.size()应该是52,返回26个元素,只删除了26个元素 public void remove() { int k = 0; while(k < deck.size()) { deck.remove(0); k++; } } public void remove() { int k=0; 而(k

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

public void remove()
{
    int k = 0;
    while(k < deck.size())
    {
        deck.remove(0);
        k++;
    }   
}
public void remove()
{
int k=0;
而(k

我在
main
中调用了
numberOfCards()
,它返回
deck.size()
并返回52。因此,我不知道为什么remove only中的
deck.size()
返回26。

您删除元素,减小大小,同时重新使用
k
,这在deck大小的一半时达到平衡

while循环应该是:

while(deck.size()>0)
    deck.remove(0);

问题是,在每次迭代中,当数据组的大小减小时,增加k,因此k和deck.size()将在中途“相遇”,所以在26

您只需执行以下操作即可解决此问题:

public void remove()
{
  int k = deck.size();
  while(k != 0)
  {
     deck.remove(0);
     k--;
  }   
}

因为计算机正在做你让它做的事情

  • 首先,它将
    k
    设置为0
  • 然后调用
    deck.size()
    ,返回52<代码>0<52
    ,因此它进入循环
  • 然后它从
    组中删除第一个元素
  • 然后它增加
    k
    (将其设置为1)
  • 然后调用
    deck.size()
    ,返回51<代码>1<51
    ,因此它再次进入循环
  • 然后它从
    组中删除第一个元素
  • 然后它增加
    k
    (将其设置为2)
  • 然后调用
    deck.size()
    ,返回50<代码>2<50
    ,因此它再次进入循环
  • 然后它增加
    k
    (将其设置为25)
  • 然后调用
    deck.size()
    ,返回27<代码>25<27,因此它再次进入循环
  • 然后它从
    组中删除第一个元素
  • 然后它增加
    k
    (将其设置为26)
  • 然后调用
    deck.size()
    ,返回26
    26<26
    真,因此它跳到循环的末尾,即使
    组中仍有26个元素

    • 你不必重新发明轮子。要从列表中删除所有元素,只需调用:

      deck.clear();
      

      这将从列表中删除所有元素。

      甲板的元素是什么。请给我们看看卡片的类型。这是一个用户定义的类哇,我只是看看我的笔记,我已经记下来了。非常感谢你的帮助!您的解决方案很简单,但可以更简单。看我的answer@rtruszk,非常正确。我的答案也是无望的低效,因为每次删除时,所有元素都必须换到前面的一个位置:P然而,我只想指出他的逻辑错误;)