我正在制作纸牌游戏,但我得到了 n 必须为正的错误。我做了一些研究,这意味着我相信 (cards.size) 等于或小于 0,但我不明白如何使我的代码工作,一定是有问题。
代码:
public class Deck
{
public ArrayList <Card> cards;
Deck()
{
cards = new ArrayList<>();
for (int a = 0; a < 52; a++)
{
cards.add(new Card(a));
}
}
public Card PlayerCardDraw ()
{
Random generator = new Random ();
int index = generator.nextInt (cards.size ());
return cards.remove (index);
}
如何修复我的数组列表,以免出现此错误?它与 Card 有关,所以我也会发布该代码,我知道我的 Card 类中有些地方不对,但我不知道这是否是问题所在。
public class Card
{
int c = 52;
int cardpath[] = new int[c];
Card ()
{
}
public Card(int c)
{
this.c = c;
}
public int getCardPath()
{
return cardpath[c];
}
}
错误信息:
java.util.Random.nextInt(Unknown Source) at Cards.Deck.PlayerCardDraw(Deck.java:21)
line 21 is int index = generator.nextInt (cards.size ());
编辑:我按照 Nankumar Tekale 所说的做了,正如你们预测的那样:它绘制了超过 52 张牌。我不明白的是错误正在弹出
for (int i = 0 ; i < 4 ; i++)
{
C = deck.P1CardDraw ();
card [cardNum].draw (i*75+100, 400); //Error line
cardNum++;
}
我的 P1CardDraw() 类
public ArrayList < Card > p1Hand;
public ArrayList < Card > P1CardDraw ()
{
p1Hand = new ArrayList < > ();
p1Hand.add (PlayerCardDraw ());
return p1Hand;
}