在构造函数中将数组用作参数时出现java空指针错误
我正在攻读AP Comp Sci,并在实验室“elevens”工作。我要做的就是实例化“Deck”类的一个对象,我的构造函数抛出一个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 楼答案
cards
尚未实例化,因此它仍然是null
,当您尝试与它交互时,它将导致NPE最简单的解决方案(考虑到我们应该尽量减少代码中空值的出现):
# 2 楼答案
当你说
private ArrayList<Card> cards;
时,它相当于这就是为什么
cards
在构造函数中是null
。将其更改为1或者,在
for
循环之前添加一个cards = new ArrayList<>();
(在构造函数中)同样,你似乎同时错过了球杆和插孔
1并且更喜欢编程而不是
List
接口