0

你如何创建一个构造函数来获取卡片数组并将它们添加到一个数组列表中?到目前为止,以下是我的 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);
    }
}

当前,您正在声明一个局部变量,该变量在构造函数返回后立即超出范围。

更新

在类本身中有一个Hands列表是没有意义的。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 回答