0

我有一个组合框,其中存储“计算机,代码:21”,“历史记录,代码:31”,并且可以更改项目的数量。但是当我编写此代码以获取其项目时:

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]

[计算机,代码=21,历史,代码:31]

4

4 回答 4

3

因为您要使用bIHELessons.add(..). 每个后续调用都会添加到已经打印的字符串。

如果您仍想添加到 ArrayList 并打印 ArrayList 中的当前项目,请使用System.out.println(bIHELessons.get(i));而不是使用您现在的内容。我也不认为您需要使用toString(),因为您的对象已经在 type 中string

如果您只想打印当前正在迭代的字符串,请更改System.out.println(bIHELessons.toString());为。System.out.println(lessons);

于 2009-11-25T13:45:58.773 回答
1

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

您的问题不清楚,但您可以考虑将 System.out.println 移到循环之外并确定这是否是您要查找的内容。

于 2009-11-25T14:03:10.987 回答
1

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

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

于 2009-11-25T13:50:12.733 回答
0

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

于 2009-11-25T14:08:04.347 回答