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