Java 尝试使用其他类中的方法时出现空指针异常

Java 尝试使用其他类中的方法时出现空指针异常,java,arrays,class,nullpointerexception,Java,Arrays,Class,Nullpointerexception,编辑:[已解决]再次感谢--我想我学到了一些关于数组的新知识: 创建对象[]时,something=新对象[int]; 所有内容都指向null,需要明确告知要指向的内容。 浏览了可能的解决方案后,我仍然没有找到问题的答案: 我试图从另一个类调用一个方法,但它似乎没有初始化/实例化。我以为我做了,但显然没有?我一直得到一个NPE 主要方法(countingCards.java): 卡片类别: public class card { private String value = "hello

编辑:[已解决]再次感谢--我想我学到了一些关于数组的新知识:

创建对象[]时,something=新对象[int]; 所有内容都指向null,需要明确告知要指向的内容。

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

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

主要方法(countingCards.java):

卡片类别:

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)

有人知道我的代码是怎么回事吗?

deckCard[1]。getValue()
会引发一个
NullPointerException
,因为
deckCard
数组的所有51个元素在显式初始化之前都是
null

您需要实际向这个数组添加值,否则它将始终返回
null
。尝试创建一个快速for循环,并向其中添加一些随机变量,然后进行尝试


您无法获得最初从未创建过的东西的价值

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

int l = deckCard.length();

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

对于(i=0;iAn数组不初始化其中的元素。它们最初引用的是
null
。鉴于此,您认为
deckCard[1].getValue()
有什么作用?此类问题与另一个类中的方法无关。如果执行myobj.mymethod()当myobj为null时,您将在该行代码中得到一个NPE。太棒了,谢谢。所以我只是做了一堆null指针,实际上没有对它们做任何处理。请不要在标题中标记您的问题已解决。相反,您应该鼓励将有助于您的注释转换为答案并接受它。明白了。我认为这会对您有所帮助ul告诉其他人这个问题已经解决了,以防有人在寻找类似问题的快速而肮脏的答案,但我不会这么做。不过我接受了Vannens的答案。是的,我只是添加了大量for循环,将每张卡初始化为各自的值(Ace、2、3、4…等等)。再次感谢!不需要大量for循环。您可以创建两个具有值(1-13)和套件(heart,blabla..)的数组。然后,使用嵌套循环,您可以选择一个值和套件并创建一张卡():deckCard[i]=新卡(值,套件);谢谢——上面这个评论的人的回答和你的一样;我是个白痴。再次感谢!没问题。我们都从某个地方开始,不是白痴,只是还在学习诀窍!就像我在某些方面一样!
int l = deckCard.length();

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