繁体   English   中英

有人可以告诉我for循环有什么问题吗

[英]Can someone please tell me what is wrong with the for loop

因此,我应该制作一副纸牌,然后以这种方式进行。 没有CT错误,但出现IndexOutOfBound异常。 我不知道为什么。 卡类已定义。 该值最高为12,而西装最高为3(含)。 谢谢!

ArrayList<Card> deck = new ArrayList<Card> (52);

public StandardDeck()
{
   buildDeck();
}

public void buildDeck()
{
   int index = 0;
   for(int suit = 0; suit <= 3; suit++)
   {
      for(int value = 0; value <= 12; value++)
      {
         deck.set(index, new Card(value, suit)); 
         index++;
      }   
   }

}//buildDeck

不要使用

deck.set(index, new Card(value, suit)); 

采用

deck.add(new Card(value, suit)); 

set()抛出IndexOutOfBoundsException - if the index is out of range (index < 0 || index >= size()) 因此,在添加第i个元素之前,您无法调用set(i-1,...) ,而这正是您尝试执行的操作。

您应该这样做:

for(int suit = 0; suit <= 3; suit++)
{
   for(int value = 0; value <= 12; value++)
   {
      deck.add(new Card(value, suit)); 
      index++;
   }   
}

arraylist中没有任何内容,但是您需要先添加,然后才可以使用set作为有效索引。 一旦有了完整的套牌,就可以进行deck.set(index, card);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM