为什么这个关于combobox的代码不起作用?

为什么这个关于combobox的代码不起作用?

问题描述:

我有存储组合框,当我写获取其项目的代码,也物品的数量可以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

因为要附加到与列表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

从我能看到你的代码正在做它应该做的事情。您是否想知道为什么每次打印屏幕的其他调用都会重复显示所有项目?

发生这种情况是因为List的toString()方法将列表中的所有项目放入单个字符串中。

我不认为问题是与JComboBox,而是与您的期望。 System.out.println(bIHELessons.toString());将打印出ArrayList的全部内容。由于您在每次迭代时都向ArrayList添加一个新字符串,因此您的System.out.println(bIHELessons.toString());将显示渐进式内容累积。

你的问题并不清楚,但你可以考虑将System.out.println移到你的循环之外,并确定是否你正在寻找。

您正在打印出整个列表的ToString()表示形式。如果您想打印出对象,则只需打印课程变量即可。