1

デッキ内のすべてのカードを表示するコードを作成しようとしています。残念ながら、スタックに追加された最後のカードは、以前に入力されたすべてのカードを上書きし続けるようです。どうすればこれを防ぐことができますか? 今、コードを入力すると、「Ace of Spades」という行が 52 回表示されるだけです。

import java.util.*;

public class cardSearcher{

public static void main(String[] args){
 Stack<card> deck = new Stack<card>();
 String[] value = {"2","3","4","5","6","7","8","9","10","Jack","Queen","King","Ace"};
 String[] suit = {"Diamonds","Hearts","Clubs","Spades"};

for (int i=0;i<value.length;i++){
  for (int j=0;j<suit.length;j++){
        deck.push(new card(value[i],suit[j]));
  }
}

while (!deck.empty()){
  card chosenCard = deck.pop();
  System.out.println(chosenCard.value +" of "+ chosenCard.suit);
  }
 }
}

カードコードは次のとおりです。

public class card {

    public static String value = "";
    public static String suit = "";

    public card(String valueofCard, String suitofCard) {
        card.value = valueofCard;
        card.suit = suitofCard;
    }
}
4

2 に答える 2

7

staticインスタンスではなく、クラス全体に属する変数。それらを変更するときは、すべてのインスタンス間で共有される変数を変更しています。変数の修飾子を削除してstatic、インスタンスごとに個別化します。

于 2013-09-06T02:22:42.787 に答える