Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 空指针错误--将数组用作构造函数中的参数_Java - Fatal编程技术网

Java 空指针错误--将数组用作构造函数中的参数

Java 空指针错误--将数组用作构造函数中的参数,java,Java,我正在攻读AP Comp Sci,并在实验室“elevens”工作。我要做的就是实例化“Deck”类的一个对象,我的构造函数抛出一个NullPointerError。在做了一次打印检查之后,我发现第一个索引被正确地找到了,是第二个索引抛出了错误。为了解决这个问题,我需要在Deck类或主方法中更改什么 public Card(String cardRank, String cardSuit, int cardPointValue) { suit = cardSuit; rank

我正在攻读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);
}
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"};