空指针错误 - 在构造函数中使用数组作为参数

时间:2016-04-13 22:47:35

标签: java

我正在参加AP Comp Sci并在实验室工作" elevens"。我试图做的就是实例化" Deck"的对象。 class,我的构造函数抛出一个NullPointerError。在进行打印检查后,我发现第一个索引正确找到,它是第二个引发错误的索引。我需要在Deck类或主要方法中更改以解决此问题?

public Card(String cardRank, String cardSuit, int cardPointValue) 
{
    suit = cardSuit;
    rank = cardRank;
    pointValue = cardPointValue;
}

private ArrayList<Card> cards;

public Deck(String[] ranks, String[] suits, int[] values) 
{
    for(int i =0; i < suits.length; i++)
    {                
        cards.add(new Card(ranks[i], suits[i], values[i]));
        size++;
    }
}

public static void main(String[] args) 
{
    String [] suits = new String [] {"Spades", "Hearts", "Diamonds"};
    String [] ranks = new String [] {"Queen", "King", "Ace"};
    int [] points = new int [] {10, 10, 11};
    Deck deck = new Deck(ranks, suits, points);
}

1 个答案:

答案 0 :(得分:3)

当您说private ArrayList<Card> cards;时,等同于

private ArrayList<Card> cards = null;

这就是构造函数中cardsnull的原因。将其更改为 1

private List<Card> cards = new ArrayList<>();

或者,在cards = new ArrayList<>();循环之前(在构造函数中)添加for

,您似乎缺少球杆和插孔

String [] suits = {"Clubs", "Spades", "Hearts", "Diamonds"};
String [] ranks = {"Jack", "Queen", "King", "Ace"};

1 并且更喜欢编程到List接口。