2013-05-03 118 views
0

FavPic是一個數組,其中存有一個圖片元素,im試圖設置變量pRef等於該數組元素。相反,我不斷收到空指針異常崩潰。什麼是空指針異常,以及這幾行代碼如何導致這樣的事情?謝謝!空指針異常

public void setFavouritePicture (Picture pRef) 
    { 
    pRef = favPic[0]; 
    } 
+0

這意味着你永遠不會初始化數組。 – 2013-05-03 16:59:30

+0

使用'favpic = new Picture [size];' – 2013-05-03 17:00:42

+1

初始化數組好像聽起來非常像'favPic'實際上是一個空引用,如果該行失敗。不幸的是,您給我們的背景很少,我們無法說的更多。請注意,更改'pRef'的值無論如何都不會做任何事情。假設這是一個* set *方法,你不應該把'favPic [0]'設置爲'pRef'嗎? – 2013-05-03 17:00:55

回答

0

NullPointerException意味着你嘗試調用上被參照null(更常見的)一個對象引用的方法,或類似的在這裏,試圖引用指的是null陣列的特定元素。

它只需要2行代碼就會導致NullPointerException - 一個聲明參考變量,以便它的null,以及一個嘗試使用它的東西。

在使用它之前,您必須創建您的數組來初始化它。

+0

我做了初始化,這是奇怪的事情。 http://pastebin.com/kcGWZWgt多數民衆贊成在代碼即時工作 – Alex 2013-05-03 17:10:31

+0

除了代碼,請爲NullPointerException添加堆棧跟蹤。我們沒有你使用的其他類的代碼,這使得很難分辨出什麼問題(例如,在哪裏調用setFavoritePic()?)。 – Elist 2013-06-23 08:36:37

0

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);

+0

在我的代碼中,我相信我初始化了這個數組。如果您想要http:// pastebin,請隨時查看。com/kcGWZWgt – Alex 2013-05-03 17:15:52

+0

在你的'setFavouritePic'方法中,添加這兩行代碼並告訴我你得到了什麼。我們正在尋找兩個錯誤。 – nrubin29 2013-05-03 17:25:10

0

當您嘗試訪問該值null(也可能不被物業初始化的對象,也可以手動分配值null)。

在你的情況下,數組favPic可能null所以當您嘗試使用favPic[0],它不能訪問的favPic的第一個值,並拋出NullPointerException

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; 
}