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

时间:2015-01-19 19:01:03

标签: java

所以我应该制作一副牌,我就是这样做的。没有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

2 个答案:

答案 0 :(得分:3)

不要使用

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,...),这正是您尝试做的事情。

答案 1 :(得分: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);