2011-04-28 63 views
0

我在處理代碼中創建了一個自定義對象數組,然後繼續進行初始化。 objectArray[i].siteID = 5;處理 - 簡單空指針錯誤

我已經花了近2小時試圖找到如何解決這個問題,但語法信息似乎是正確的:但是,由於某種原因,我在碰到一個空指針異常!

代碼:

class TtalkObject{ 
    int siteID = 0; 
    String URL = "test"; 
    int commentNum = 5; 
    int averageLength = 5; 

} 

PFont f; 
TtalkObject[] objectArray; 
int whatObjectPart = 0; 
int whatObject = 0; 

void setup() 
{ 
    size(300,300); 
    f=createFont("Arial",16,true); 
    objectArray = new TtalkObject[50]; 

    for (int i = 0; i < 50; i ++){ 
     objectArray[i].siteID = 5; 
     objectArray[i].URL = "test"; 
     objectArray[i].commentNum = 10; 
     objectArray[i].averageLength = 10; 
    } 

} 
+0

您是否嘗試過通過你的程序在調試器步進? – 2011-04-28 06:58:40

回答

1

看起來你永遠不會創建你的TtalkObject的實例,你只是初始化一個數組來保存其中的50個對象。

我不熟悉Java語法,在C#中它會是

for (int i = 0; i < 50; i ++){ 
objectArray[i] = new TtalkObject(); 
objectArray[i].siteID = 5; 
objectArray[i].URL = "test"; 
objectArray[i].commentNum = 10; 
objectArray[i].averageLength = 10; 
} 
+1

嗯,我很抱歉,問一個問題,會給我負面的點,但我新的和沮喪的...無論如何,非常感謝你的答案,每個人。 – Jason 2011-04-28 07:01:41

+0

你不必對不起,一切都在堆棧中; o) – Victor 2016-04-21 14:24:18

1

空指針錯誤通常,當您使用您尚未分配的內存會發生什麼,或當你訪問某些變量,它是超出範圍。

+0

我不知道誰做的-1,但如果他們有一個小腦袋我正確回答他沒有做objectArray [i] = new TtalkObject();並試圖訪問它....換句話說意味着....使用你沒有分配內存的東西.... – koool 2011-04-28 07:06:44

3
objectArray = new TtalkObject[50]; //you have initilized array of 50 reference 

但並不意味着每個50個參考點一個對象

您需要創建對象爲他們每個人。

讓它

objectArray = new TtalkObject[50]; 
for (int i = 0; i < 50; i ++){ 
objectArray[i] = new TtalkObject();// or some other preferred initialization 
objectArray[i].siteID = 5; 
1

戴上以下線22

objectArray[i] = new TtalkObject();