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)
工作得非常好.
声明时Card[] arr = new Card[2];,数组内的每个引用都是null.你必须实例化一个新的Card()尝试调用它的方法之前,每个点.
这就是你的第二种方法有效的原因 - 你有两个新的a实例Card,并且在调用它上面的任何方法之前,你将它们填充在数组中.