2010-11-01 49 views
1

我已經遇到了以下問題:我有一個私有成員像這樣一個Java類:爪哇 - NullPointerException異常的Array

private Arcs[] arcs; 

這不是在構造函數初始化,因爲我不知道的長度我的矢量,但它是在讀取函數中初始化的,我從文件中讀取信息。 在這個功能我執行以下操作:

arcs = new Arcs[n]; //n is a number read from file 

然後有一個while循環中,我從文件中讀取其他的東西,我有這樣的:

while(condition){ 
... 
arcs[i].add(blah); //i is a valid number, smaller than n, and the add function is also correct 
... 
} 

但在這裏我有一個錯誤說NullPointerException,我不明白爲什麼。如果有人向我解釋發生了什麼,我將不勝感激。

回答

9

你實際上曾經在arcs[i]存儲Arcs對象嗎?如果不是,則arcs[]的所有元素將被初始化爲空。 (因此,NPE)

做這樣的事情:

while(condition){ 
    // ... 
    arcs[i] = new Arcs(); 
    arcs[i].add(blah); 
    // ... 
} 

參考:

+0

我不能這樣做,因爲我可能在不止一個循環中反駁相同的弧線[i],這意味着一遍又一遍地初始化它,最後我不會有所有的我需要的信息。我也試圖在此之前做到這一點,但仍然不好。 – Sireny 2010-11-01 07:50:26

+0

@Sireny,你可以做'if(arcs [i] == null){arcs [i] = new Arcs(); }'。不過,可能有更清晰的方法來處理這個問題。 – 2010-11-01 07:54:48

+0

好的,我再次嘗試,現在它的工作原理...我用循環來初始化所有元素,現在沒關係。我只是不明白它爲什麼不起作用。無論如何,感謝大家的幫助:) – Sireny 2010-11-01 07:55:02