我得到nullpointerexception请帮助:)

时间:2014-01-08 10:36:41

标签: java nullpointerexception

所以我的问题就是我在测试创建数组时得到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));

    }
}

5 个答案:

答案 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。