尝试使用另一个类中的方法时出现空指针异常

时间:2014-01-05 21:50:10

标签: java arrays class nullpointerexception

编辑:[求助]再次感谢 - 我想我学到了一些我应该知道的关于数组的新东西:

创建对象时[] something = new object [int]; 所有东西都指向null,需要明确指出要指向的内容。

在浏览了可能的解决方案之后,我仍然没有找到我的问题的答案:

我试图从另一个类调用一个方法,但它似乎没有初始化/实例化。我以为我做了但显然不是吗?我一直在接受NPE

主要方法(countingCards.java):

public class deck {
     card[] deckCard = new card[51];

    /** Rules for the deck of card.
      * 1. You cannot have same value of cards with same suite.
      * --- i.e) no two queens of hearts
     **/

    public void test() {
        System.out.println( deckCard.length );
        System.out.println( deckCard[1].getValue() );
    }

卡类:

public class card {
    private String value = "hello";
    private String suite = "suiteHello";

    // Method to return value
    public String getValue() {
        return value;
    }
    // Method to return suite
    public String getSuite() {
        return suite;
    }
    // Method to set value
    public void setValue(String s) {
        value = s;
    }
    // Method to set suite
    public void setSuite(String s) {
        suite = s;
    }
    // Method to test
    public void testing() {
        value = "test";
        System.out.println( value );
    }
}

甲板课:

public class deck {
    card[] deckCard = new card[51];

    /** Rules for the deck of card.
      * 1. You cannot have same value of cards with same suite.
      * --- i.e) no two queens of hearts
     **/

    public void test() {
        System.out.println( deckCard.length );
        System.out.println( deckCard[1].getValue() );
    }
}

我得到的例外

 Exception in thread "main" java.lang.NullPointerException
 at deck.test(deck.java:11)
 at countingCards.main(countingCards.java:4)

任何人都知道我的代码发生了什么?

3 个答案:

答案 0 :(得分:5)

您尚未初始化数组的元素。在甲板课上你需要这样的东西。

int l = deckCard.length();

for (i = 0; i<l; i++) {
    deckCard[i] = new Card();
}

PD:名称类应为,大​​写。

答案 1 :(得分:2)

deckCard[1].getValue()引发NullPointerException,因为 all deckCard数组的51个元素都是null,直到您明确初始化它们为止。

答案 2 :(得分:2)

您需要实际向此数组添加值,否则它将始终返回null。尝试快速循环并添加一些随机变量,然后尝试。

您无法获取最初从未创建的内容的值。