ここで、BlackJack の Java ゲームで少し問題が発生しています。カードの名前と値にハッシュマップを使用するのをやめて、それを String[] に変換しました。ただし、一部のコードが壊れているようです。
private void createDeck(int numCards, int numSuits) {
deck = new ArrayList<Card>();
cardUsed = new ArrayList<Card>();
if ((numCards % numSuits) > 0) return;
for (int i=0; i < numSuits; i++) {
for(int j=1; j <= (numCards / numSuits); j++) {
deck.add(new Card(new Suit(i), j + "", j));
}
}
}
これは実行されず、未解決のコンパイルの問題が発生します: コンストラクタ Card(Suit, String, int) は未定義です。ただし、カードのパラメーターは Card(Suit, String[], int) です。String 配列を引き続き使用してこれを回避する方法はありますか? プログラムでは下線を引いてdeck.add(new Card(new Suit(i), j + "", j));
います。
Card.java のソースはこちら
public class Card {
private String[] cardRank = new String[] {"Ace", "Two", "Three", "Four",
"Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"} ;
private Suit suit = null;
private int cardValue = 0;
public Card(Suit suit, String[] cardRank, int cardValue) {
this.cardRank = cardRank;
this.suit = suit;
this.cardValue = cardValue;
}
public String toString() {
return cardRank + " of " + suit.getSuitName();
}
public String[] getCardRank() {
return cardRank;
}
public void setCardRank(String[] cardRank) {
this.cardRank = cardRank;
}
public Suit getSuit() {
return suit;
}
public void setSuit(Suit suit) {
this.suit = suit;
}
public int getCardValue() {
return cardValue;
}
public void setCardValue(int cardValue) {
this.cardValue = cardValue;
}
}