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