カードゲームを作っているのですが、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;
}