我正在尝试创建一个构造函数,该构造函数创建一个数组并使用自定义对象填充该数组。这个阵列代表了一副牌。
googleMap.clear();
mClusterManager = new ClusterManager<MyItem>(getActivity(), googleMap);
googleMap.setOnMarkerClickListener(mClusterManager);
googleMap.setOnCameraChangeListener(mClusterManager);
readItems();
mClusterManager.setRenderer(new MyClusterRenderer(getActivity(), googleMap, mClusterManager));
我觉得这个构造函数应该创建一个数组并用卡对象填充它,但它不会识别从DeckOfCards()实例化为数组的任何对象。
答案 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];