卡甲板有问题

时间:2016-02-10 20:01:07

标签: java arrays loops methods compiler-errors

我遇到了这部分代码的问题。调用方法时,我不断收到空指针异常。我不确定它有什么问题。

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 ++。

3 个答案:

答案 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);