2009-11-25 170 views
0

我有存儲組合框,當我寫獲取其項目的代碼,也物品的數量可以changed.but:爲什麼這個關於combobox的代碼不起作用?

List<String> bIHELessons = new ArrayList<String>(); 
for (int i=0;i<jComboBox1.getItemCount();i++) { 
    String lessons = (String) jComboBox1.getItemAt(i); 
    if (lessons != null&& lessons.trim().length()!=0) { 
     bIHELessons.add(lessons); 
     System.out.println(bIHELessons.toString()); 
    } 
} 
「的電腦,代碼:21」,「31史,代號」

它會顯示在控制檯這些句子:

[電腦,代碼= 21]

[電腦,代碼= 21,歷史,郵編:31]

+0

你的問題到底是什麼?你的程序做了什麼? 我不編程JAVA,但我覺得很奇怪你實例化一個arraylist並將其分配給一個字符串列表。 您的biHELessons.toString()會轉儲您在循環中添加的項目的內容,所以我不認爲您的結果很奇怪。 – 2009-11-25 13:51:07

+0

你期望程序做什麼? @Michel'ArrayList'實現'List'接口。 – Amarghosh 2009-11-25 13:53:44

+0

請編輯您的文章並說出您期望得到的內容。現在看起來沒問題... – 2009-11-25 13:54:52

回答

3

因爲要附加到與列表bIHELessons.add(..)。每個隨後的調用都會添加到已打印的字符串中。

如果您還想添加到ArrayList並打印ArrayList中的當前項目,請使用System.out.println(bIHELessons.get(i));而不是使用您現在的設置。我也不認爲你需要使用toString(),因爲你的對象已經在string類型中。

如果您只想打印當前正在迭代的字符串,請將System.out.println(bIHELessons.toString());更改爲System.out.println(lessons);

+0

就像他說的,你是println語句正在打印List的全部內容。 – ChadNC 2009-11-25 16:06:07

1

從我能看到你的代碼正在做它應該做的事情。您是否想知道爲什麼每次打印屏幕的其他調用都會重複顯示所有項目?

發生這種情況是因爲List的toString()方法將列表中的所有項目放入單個字符串中。

1

我不認爲問題是與JComboBox,而是與您的期望。 System.out.println(bIHELessons.toString());將打印出ArrayList的全部內容。由於您在每次迭代時都向ArrayList添加一個新字符串,因此您的System.out.println(bIHELessons.toString());將顯示漸進式內容累積。

你的問題並不清楚,但你可以考慮將System.out.println移到你的循環之外,並確定是否你正在尋找。

0

您正在打印出整個列表的ToString()表示形式。如果您想打印出對象,則只需打印課程變量即可。

相關問題