2012-10-16 77 views
2

我已經在我的主類中聲明瞭兩個ArrayLists。一個是Routine對象的ArrayList,另一個是例程名稱的String數組。每次構建例程時,例程名稱以及存儲在例程中的名稱都將存儲在Names arrayList中。ArrayList.toArray()拋出NullPointerException異常

static ArrayList <Routine> routineArrayList = new ArrayList <Routine>(); 
    static ArrayList <String> Names = new ArrayList <String>();      

我創建了一個JList和使用字符串名稱的ArrayList來填充它..

list = new JList(Names.toArray()); 

一切都很好,我可以選擇一個名字,並選擇相應的程序。

問題,是每個例程,都有它自己的ArrayList的名稱。

我希望能夠使用選定的例程並使用INSIDE該例程填充JList。這就是我試圖..

currentRoutine = routineArrayList.get(intChoice); 
    ... 
    list = new JList(currentRoutine.Names.toArray()); ******** PROBLEM LINE 

System.out.println(currentRoutine.Names.toArray())給人如出一轍NullPointerException

它一直在我身上徘徊了一段時間,如果需要更多的信息,任何幫助將同樣真誠地感謝我會盡我所能提供它。

編輯

謝謝您的回答,原來的主要問題是,每一個函數對象內部名稱陣列沒有正確initalized。但是,問題仍然存在。

'System.out.println("Choice: " + currentRoutine.names.get(0)); // Or get(x) 

'System.out.println("Choice: " + currentRoutine.names.toString() 

都給予正是他們應該。完整的名稱數組或元素 注:「的System.out.println( 「選擇:」 + currentRoutine.names.toArray()給出的詳細地址等

然而,當我嘗試

'list = new JList(currentRoutine.names.toArray());' 

我得到同樣的NullPointerException異常?

乾杯

+2

難道是currentRoutine(或)名稱爲空? – kosa

+2

「名稱」和「routineArrayList」故意是「靜態」它應該真的是一個類變量而不是一個實例變量? – amit

+1

如果每個'Routine'都有自己的名稱列表,那麼爲什麼'Names'' static'?順便說一下,它應該被命名爲'names'。大寫名稱通常保留給Java中的類型。 –

回答

3

的方法ArrayList<String>.toArray()不應該拋出一個NullPointerException,所以這裏的問題是幾乎可以肯定,要麼currentRoutinecurrentRoutine.Namesnull。您需要檢查填充routineArrayList的代碼,確保其所有元素都非空並且具有非空Names字段。

0

建議:遵循域的命名約定所以staticArrayList <String> names代替static ArrayList <String> Names

這似乎ruakh在他的回答中提到currentRoutinecurrentRoutine.Names爲空。

所以做一個空的小檢查。

0

感謝您的幫助球員,

我得到它排序,它是與不良奠定了框架和JList的做真的。我結束了在我的第一個JList以及新的JFrame的selectionListener中聲明一個新的'names'(Routine.names)的JList。

乾杯,

馬修

相關問題