我遇到了这部分代码的问题。调用方法时,我不断收到空指针异常。我不确定它有什么问题。
class Deck{
public Card[] myCards = new Card[52];
void refreshDeck(){
int cardValue = 1;
char cardSuit = 'c';
for (int i = 0; i < 52; i++){
myCards[i].setValue(cardValue);
myCards[i].setSuit(cardSuit);
if (cardValue == 13){
cardValue = 0;
switch(cardSuit){
case 'c':
cardSuit = 's';
break;
case 's':
cardSuit = 'd';
break;
case 'd':
cardSuit = 'h';
break;
}
}
cardValue++;
}
}
我真的找不到错误。这适用于c ++。
答案 0 :(得分:3)
您必须初始化阵列中的每张卡。试试这个:
for (int i = 0; i < 52; i++){
myCards[i] = new Card();//a constructor
myCards[i].setValue(cardValue);
myCards[i].setSuit(cardSuit);
//...
答案 1 :(得分:0)
您尚未初始化阵列中的每张卡,请添加
myCards[i] = new Card();
到你的for循环开始
答案 2 :(得分:0)
您构建了一个包含52个Card
个对象引用的数组,但尚未创建对象。然后该数组是52个空引用的数组。你需要建立每一个:
for (int i = 0; i < 52; i++) {
myCards[i] = new Card();
...
为Card
添加足够的构造函数以便能够写出更好:
myCards[i] = new Card(cardValue,cardSuit);