簡體   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