Java 空指针错误--将数组用作构造函数中的参数
我正在攻读AP Comp Sci,并在实验室“elevens”工作。我要做的就是实例化“Deck”类的一个对象,我的构造函数抛出一个NullPointerError。在做了一次打印检查之后,我发现第一个索引被正确地找到了,是第二个索引抛出了错误。为了解决这个问题,我需要在Deck类或主方法中更改什么Java 空指针错误--将数组用作构造函数中的参数,java,Java,我正在攻读AP Comp Sci,并在实验室“elevens”工作。我要做的就是实例化“Deck”类的一个对象,我的构造函数抛出一个NullPointerError。在做了一次打印检查之后,我发现第一个索引被正确地找到了,是第二个索引抛出了错误。为了解决这个问题,我需要在Deck类或主方法中更改什么 public Card(String cardRank, String cardSuit, int cardPointValue) { suit = cardSuit; rank
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);
}
public卡(String cardRank、String cardSuit、int cardPointValue)
{
西服=卡片西服;
秩=卡秩;
pointValue=cardPointValue;
}
私人ArrayList卡;
公共甲板(字符串[]等级,字符串[]套装,int[]值)
{
for(int i=0;i<1.length;i++)
{
卡片。添加(新卡片(等级[i]、套装[i]、价值[i]);
大小++;
}
}
公共静态void main(字符串[]args)
{
字符串[]套装=新字符串[]{“黑桃”、“红心”、“钻石”};
字符串[]等级=新字符串[]{“女王”、“国王”、“王牌”};
int[]点=新的int[]{10,10,11};
甲板甲板=新甲板(等级、套装、点数);
}
卡
尚未实例化,因此它仍然是null
,当您尝试与它交互时,它将导致NPE
最简单的解决方案(考虑到我们应该尽量减少代码中空值的出现):
private ArrayList cards=new ArrayList();
当你说私人ArrayList卡时代码>,相当于
或者,添加一个cards=newArrayList()代码>在for
循环之前(在构造函数中)
同样,您似乎同时缺少球杆和插孔
String [] suits = {"Clubs", "Spades", "Hearts", "Diamonds"};
String [] ranks = {"Jack", "Queen", "King", "Ace"};
1并且更喜欢编程而不是列表
界面。你为什么总是回答这些垃圾问题?我永远不会理解你的意思,因为编程很难,我记得我很年轻,我对提问者有同情心。你可能认为这个问题不值得你花时间,但我们都是从某个地方开始的。我并不反对评论答案来帮助他们,但更多这些问题和答案在这里毫无意义。垃圾问题可能很苛刻。我的观点是,副本已经解释了所有这些以及更多。谢谢!我为重复道歉;我创建了一个新问题,因为我不明白错误最初来自何处,因为从编译器突出显示的代码行是我添加卡的行,而不是数组的实际初始化。
private ArrayList<Card> cards = null;
private List<Card> cards = new ArrayList<>();
String [] suits = {"Clubs", "Spades", "Hearts", "Diamonds"};
String [] ranks = {"Jack", "Queen", "King", "Ace"};