0

ここで、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;
}

}

4

3 に答える 3

0

Stringではなく、を渡していString[]ます。1 つは単一のオブジェクトであり、もう 1 つはオブジェクトの配列です。

j + ""Stringのセットではなく、1 つStringの になります。

をコンストラクターに渡す前に s のString配列に配置することで、これを解決できます。String

于 2013-06-27T15:41:09.213 に答える