FavPic是一个数组,其中存有一个图片元素,im试图设置变量pRef等于该数组元素。相反,我不断收到空指针异常崩溃。什么是空指针异常,以及这几行代码如何导致这样的事情?谢谢!空指针异常
public void setFavouritePicture (Picture pRef)
{
pRef = favPic[0];
}
FavPic是一个数组,其中存有一个图片元素,im试图设置变量pRef等于该数组元素。相反,我不断收到空指针异常崩溃。什么是空指针异常,以及这几行代码如何导致这样的事情?谢谢!空指针异常
public void setFavouritePicture (Picture pRef)
{
pRef = favPic[0];
}
甲NullPointerException
意味着你尝试调用上被参照null
(更常见的)一个对象引用的方法,或类似的在这里,试图引用指的是null
阵列的特定元素。
它只需要2行代码就会导致NullPointerException
- 一个声明参考变量,以便它的null
,以及一个尝试使用它的东西。
在使用它之前,您必须创建您的数组来初始化它。
A NullPointerException
当something为null或undefined时被调用。您要么尝试从未声明的数组中获取值,要么尝试从尚未定义的数组中获取值。
例如,如果我有一个int[]
包含1,2和3,并且我尝试说System.out.println(int[3])
,它将无法工作,因为没有值。
运行以下检查,让我知道你会得到什么:
System.out.println(favPic == null);
System.out.println(favPic[0] == null);
当您尝试访问该值null
(也可能不被物业初始化的对象,也可以手动分配值null
)。
在你的情况下,数组favPic
可能null
所以当您尝试使用favPic[0]
,它不能访问的favPic
的第一个值,并抛出NullPointerException
。
在你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;
}
这意味着你永远不会初始化数组。 – 2013-05-03 16:59:30
使用'favpic = new Picture [size];' – 2013-05-03 17:00:42
初始化数组好像听起来非常像'favPic'实际上是一个空引用,如果该行失败。不幸的是,您给我们的背景很少,我们无法说的更多。请注意,更改'pRef'的值无论如何都不会做任何事情。假设这是一个* set *方法,你不应该把'favPic [0]'设置为'pRef'吗? – 2013-05-03 17:00:55