所以我的问题就是我在测试创建数组时得到Nullpointerexception
并且无法找出原因:(
它想要更多的文字,所以我正在做的是尝试制作一副你可能看到的纸牌。我正在使用JUnit来测试数组的创建,但我正在失败。
异常发生在If语句中。
public class Deck {
private int type;
private int text;
private String[] texts;
private String[] types;
private CardMaster[] deck = new CardMaster[38];
public CardMaster[] getDeck() {
return deck;
}
public void setDeck(CardMaster[] deck) {
this.deck = deck;
}
public Deck()
{
for(int i = 0;i<deck.length;i++)
{
int id;
Random Rgen = new Random();
id = Rgen.nextInt(deck.length+1);
do
{
if (deck[id].equals(null))
{
deck[id] = new CardMaster("test");
}
}
while(!deck[id].equals(null));
}
}
答案 0 :(得分:4)
将此行while(!deck[id].equals(null));
更改为while(deck[id]!=null);
另外
将此if (deck[id].equals(null))
更改为if (deck[id]==null)
答案 1 :(得分:4)
试试这个:
do{
if (deck[id] == null){
deck[id] = new CardMaster("test");
}
}
while(deck[id] != null);
基本上:.equals()用于比较对象。使用==与null进行比较。
答案 2 :(得分:1)
在语句“deck [i] .equals(null)”中,您实际上是在null引用上调用equals()方法。 按照上述答案中的建议更改支票。
答案 3 :(得分:1)
equals()方法用于比较实际值(由对象引用变量引用)而不是引用。 因为你正在比较一个参考变量和null {deck [i] .equals(null)} 你正在获得NPE。 See here for equals method Details
答案 4 :(得分:0)
equals用于比较两个对象,null不是任何类的实例,因此你必须用==或!=替换equals。