私の問題は、クラスの中でshuffle()
メソッドがprivate
(プライベートである必要があります)を使用しているようです。 drawNextCard()
メソッドで使用するか、CardDeck()
コンストラクタで使用するかはあまりお確かめください。私のコーディングが正しいかどうかも私はあまりよく分かりません。どんな提案/ヒントも大歓迎です!私のプライベートシャッフルを使用するにはどうすればいいですか
import java.util.*;
public class CardDeck
{
private String[] ranks = {"2", "3", "4", "5", "6", "7", "8", "9", "10",
"J", "Q", "K", "A" };
private char[] suits = {'s','h','d','c'};
private Card[] cards = new Card[13];
private int currentCard;
CardDeck()
{
Card newCard;
for(int i=0; i<4; i++)
{
for(int j=0; j<13; j++)
{
cards[j] = new Card(this.ranks[j], this.suits[i]);
}
}
}
public void testing() //just for testing
{
System.out.println(this.suits[0]);
}
public Card drawNextCard()
{
return cards[currentCard++];
}
private void shuffle()
{
Card[] tmp = new Card[200];
for (int i = 0; i < cards.length; i++)
{
int index = i + (int)(Math.random() * (cards.length));
tmp[i] = cards[i];
cards[i] = cards[index];
cards[index] = tmp[i];
}
}
}
メイン:
public class BlackJoker
{
public static void main(String[] args)
{
CardDeck cardDeck = new CardDeck();
cardDeck.testing();
System.out.println(cardDeck.drawNextCard());
System.out.println(cardDeck.drawNextCard());
System.out.println(cardDeck.drawNextCard());
System.out.println(cardDeck.drawNextCard());
System.out.println(cardDeck.drawNextCard());
System.out.println(cardDeck.drawNextCard());
}
}
テストのための私の出力を使用すると、IOB例外を得ている理由があるため、上記のステートメントである
s
2c
3c
4c
5c
6c
7c
どのように 'シャッフル()'を使用しようとしていますか?あなたはこのコードで決して呼ぶことはありません。 –
また、あなたのカードのデッキはおそらく52枚のカードでなければなりません。 13枚のカードを作成して上書きします。 –
ここでは問題はありません。それはあなたがそれを実装する方法です。次のカードを取る前にカードデッキをシャッフルしたい場合は、 'drawNextCard'メソッドの中でそれを呼び出す必要があります。それ以外の場合は、最初だけシャッフルしたい場合は、コンストラクタで呼び出します。 –