[英]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.