Java:如何在构造函数中创建数组并用对象填充它?

时间:2017-04-24 05:37:49

标签: java arrays constructor playing-cards

我正在尝试创建一个构造函数,该构造函数创建一个数组并使用自定义对象填充该数组。这个阵列代表了一副牌。

  googleMap.clear();
        mClusterManager = new ClusterManager<MyItem>(getActivity(), googleMap);

        googleMap.setOnMarkerClickListener(mClusterManager);
        googleMap.setOnCameraChangeListener(mClusterManager);
        readItems();
        mClusterManager.setRenderer(new MyClusterRenderer(getActivity(), googleMap, mClusterManager));

我觉得这个构造函数应该创建一个数组并用卡对象填充它,但它不会识别从DeckOfCards()实例化为数组的任何对象。

4 个答案:

答案 0 :(得分:3)

您在构造函数中再次声明了套牌。我会以这种方式初始化牌组。迭代两个数组,最简单的一个。

DeckOfCards(){

    suit = ['Hearts','Diamonds','Clubs','Spades'];
    number=['Ace','One','Two','Three','Four','Five','Six','Seven','Eight','Nine','Ten','Jack','Queen','King'];

    for (int i=0;i<4;i++){
        for (int j=0;j<13;j++){
            deck[i+j]=new Card(number[j],suit[i]);
        }
    }
}

希望这会有所帮助!!

答案 1 :(得分:1)

由于您再次声明,因此存在范围问题

Card[] deck = new Card[52];

在构造函数中,留下没有效果的全局成员,而是使用deck对象....(顺便说一下,不需要静态对象......)

DeckOfCards(){

    deck[0]=new Card("Ace","Clubs"); deck[1]=new Card("Two","Clubs"); 
    deck[2]=new Card("Three","Clubs");..(ect.).deck[49]=new 
    Card("Jack","Diamonds");
    deck[50]=new Card("Queen","Diamonds"); deck[51]=new Card("King","Diamonds");
}

答案 2 :(得分:1)

首先,您不需要在构造函数中再次初始化deck。只需使用您定义的类级变量。

其次,deck不应为static,因此请删除该字词。

第三,使构造函数公开。

最后但并非最不重要的一点是,你应该以更聪明的方式初步确定牌组。

public class DeckOfCards {
    public Card[] deck = new Card[52];

    //constructor
    public DeckOfCards(){
        String[] numbers = { "Ace", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King" };
        String[] suits = { "Spades", "Clubs", "Diamonds", "Hearts" };
        int i = 0;
        for (String suit: suits) {
            for (String number: numbers) {
                deck[i] = new Card(number, suit);
                i++;
            }
        }
    }
}

答案 3 :(得分:0)

删除该行,一切正常:
卡[]牌=新卡[52];