获取java.lang.NullPointerException

use*_*018 1 java debugging nullpointerexception

我无法相信我在如此微不足道的事情上遇到这么多麻烦.

无论出于何种原因,这些代码行导致了 nullpointerexception

Card[] arr = new Card[2];
System.out.print(arr[0].val + "\n"); //this is the line throwing the error
Run Code Online (Sandbox Code Playgroud)

卡被定义为

public class Card {
    public int val;
    public char suit;
}
Run Code Online (Sandbox Code Playgroud)

编译成功,我确保它引用了正确的类.我觉得我忽略了一些小细节.

我也注意到了

Card a = new Card();
Card b = new Card();
Card[] arr = {a, b};
System.out.print(arr[0].val + "\n");
Run Code Online (Sandbox Code Playgroud)

工作得非常好.

Mak*_*oto 7

声明时Card[] arr = new Card[2];,数组内的每个引用都是null.你必须实例化一个新的Card()尝试调用它的方法之前,每个点.

这就是你的第二种方法有效的原因 - 你有两个新的a实例Card,并且调用它上面的任何方法之前,你将它们填充在数组中.