FavPic是一个存储有图片元素的数组,我试图将变量pRef设置为等于该数组元素。相反,我不断收到Null Pointer Exception崩溃。究竟什么是空指针异常,以及这几行代码如何导致这样的事情呢?谢谢!
public void setFavouritePicture (Picture pRef)
{
pRef = favPic[0];
}
答案 0 :(得分:0)
NullPointerException
表示您试图在引用null
(更常见)的对象引用上调用方法,或者像这里一样,尝试引用数组的特定元素提到null
。
只需要2行代码就可以生成一个NullPointerException
- 一个引用一个引用变量,使其为null
,另一个代码尝试对它执行某些操作。
在使用之前,您必须创建数组以对其进行初始化。
答案 1 :(得分:0)
当某些内容为null或未定义时,将调用NullPointerException
。您要么尝试从未声明的数组中获取值,要么尝试从尚未定义的数组中获取值。
例如,如果我的int[]
包含1,2和3,并且我尝试说System.out.println(int[3])
,那么它将无效,因为没有值。
运行以下检查,让我知道你得到了什么:
System.out.println(favPic == null);
System.out.println(favPic[0] == null);
答案 2 :(得分:0)
当您尝试访问值为null
的对象时(可能未对属性进行初始化,或者可能会手动为其分配值null
)。
在您的情况下,数组favPic
可能是null
,因此当您尝试使用favPic
访问favPic[0]
的第一个值时,它会失败并抛出{{1} }}
答案 3 :(得分:0)
在main
中,你应该有类似的东西
Picture[] favPic = new Picture [1];// 1 is the number of pics
favPic = setFavouritePicture(favPic);
并且您的setFavouritePicture
方法看起来应该是这样的
public static Picture[] setFavouritePicture (Picture[] pRef){
for (int i = 0; i < pRef.length; i++) {
pRef[i] = new Picture();
}
pRef[0] = ... ; // "..." is your picture
return pRef;
}