0

カードの配列を取り、arrayList であるハンドに追加するコンストラクターをどのように作成しますか? 以下は、これまでのところ私の3つのコンストラクターです...

「クラスは、デフォルトのコンストラクター(空のハンドを作成する)、カードの配列を取得してハンドに追加するコンストラクター、および別のハンドを取得してこのハンドにカードを追加するコンストラクターを提供する必要があります」

更新しました:

  public class Hand {

    private List<Hand> hand = new ArrayList<Hand>();

    public Hand(){
        hand = new ArrayList<Hand>();
    }

    public Hand(Card[] cards){
        //this.hand.addAll(Arrays.asList(cards));
        //this.hand = new ArrayList<Hand>(Arrays.asList(cards));]
    }

    public Hand(Hand cards){
         this.hand = Arrays.asList(cards);
    }   
  }
4

3 に答える 3

2

Handクラスのインスタンス変数としてリストが必要です。

public class Hand {
    private List<Card> cards;

    public Hand(Card[] cards) {
        this.cards = Arrays.asList(cards);
    }
}

現在、コンストラクターが戻った直後にスコープ外になるローカル変数を宣言しています。

アップデート

クラス自体Handの中に s のリストがあるのは意味がありません。HandIMO、それぞれPlayerに独自のHand.

理解できる限り、カードのリストを初期化するコンストラクターと、そのリストにカードを追加するメソッドが必要です。次のようなもの:

public class Hand {
    private List<Card> cards;

    public Hand() {
        this.cards = new ArrayList<Card>();
    }

    public void addCards(Card... cards) {
        this.cards.addAll(Arrays.asList(cards));
    }
}

コンストラクタは次のとおりです。

public class Hand {
    private List<Card> cards;

    //constructor to create an empty hand
    public Hand() { 
        this.cards = new ArrayList<Card>();
    }

    //constructor to create an empty hand and add all provided cards to it
    public Hand(Card[] cards) {
        this();
        this.cards.addAll(Arrays.asList(cards));
    }

    //constructor to create an empty hand and add all cards in the provided hand
    public Hand(Hand hand) {
        this();
        this.cards.addAll(hand.getCards());
    }
}
于 2012-11-16T18:45:13.927 に答える
1
public Hand(Card[] cards){
    ArrayList<Card> hand = new ArrayList<Card>(Arrays.asList(cards));
}
于 2012-11-16T18:42:33.393 に答える
0

java.util.Arrays を使用する

List<Card> hand = Arrays.asList(cards);
于 2012-11-16T18:46:52.030 に答える