0

ユーザーに配られた 13 枚のカードからランクの合計を求める必要があります。

これは、カードの値を文字列として返し、スーツを文字列として返し、ランクを int として返す私のクラス card.java にあります。

public  String toString(){

String s = ("I am the " + rankString[rank-2] + " of " + suit + "(rank): " + rank);

    return  s;

}

これは私の CardFrame クラスにあります。CardFrame.java

private void doButton1Stuff(){
    //textArea.append("\nButton 1 Clicked");
    textArea.setText("");
    for(int i = 0; i<13; i++){
    textArea.append(deck.getNextCard().toString()+"\n");
    }

すべてが正常に機能しています。ユーザーに配られた 13 枚のカードからすべてのランクを合計し、それをスコアとして出力する方法を見つけ出す必要があります。

public Card getNextCard(){
    //check for end of deck
        topCard++;
        if(topCard==53){
        topCard = 1;
        shuffle();
        }


    return cards[deck[topCard-1]];
4

3 に答える 3

2

rank変数にはアクセサーが必要です。

public int getRank() {
    return rank;
}

次に、コレクション内のすべてのカードに使用できます (ここでは配列を想定しています)。

for(Card c: cards) {
    sum += c.getRank();
}

あなたのユースケースでは、ここで使用できます:

int sum = 0;
for(int i = 0; i<13; i++) {
    Card c = deck.getNextCard();
    textArea.append(c.toString()+"\n");
    sum += c.getRank();
}
于 2012-06-21T20:51:42.027 に答える
0

Cardクラスからランク値にアクセスできない場合は、次のtoString()ように出力からいつでも読み取ることができます。

String cardToStringOutput = "I am the " + "rankString[rank-2]" + " of "
        + "suit" + "(rank): " + "11";
int rank=Integer.parseInt(cardToStringOutput.split(" ")[6]);
System.out.println("rank="+rank);

ただし、上記のコードを使用する必要がないように、Cardクラスにゲッターを追加することを検討してください。

于 2012-06-21T20:58:34.217 に答える
0

あなたの「カード」クラス(コードから何と名付けたかはわかりません)には、整数であると思われる「ランク」メンバーがあるようです。ですから、あなたが問題を抱えているのは反復だと思います。これを試して:

private void doButton1Stuff(){
    //textArea.append("\nButton 1 Clicked");
    textArea.setText("");
    int score = 0;
    for(int i = 0; i<13; i++){
        Card card = deck.getNextCard();
        score += card.rank
        textArea.append(card.toString()+"\n");
    }
    textArea.append("Score: ");
    textArea.append(score);
}

これは、メンバー var "rank" がアクセス可能であることを前提としています ("public"、"protected"、"private" を参照してください)。

于 2012-06-21T20:59:04.833 に答える