2016-05-11 141 views
1

我需要一个程序,它可以让你添加的CD标题,删除等数组列表循环不显示

我需要使用ArrayList我的程序(存储歌曲)

代码:

ArrayList songlist = new ArrayList(); 
    Collections.addAll(songlist, "Something", "Hard Days Night", "I am the Walrus", "Yesterday", "All the Lonely People"); 
    Collections.sort(songlist); 

    int songlistsize = songlist.size(); 
    for (int i = 0; i < songlistsize; i++) { 
     outputField.setText(i + ": " + songlist.get(i)); 

问题是,程序将只显示“昨天”,而不是其他任何东西。

+0

'outputField'是什么类型的对象? – Zircon

+0

请发布您的所有代码,以便我们可以真正重现问题 –

+0

我认为'outputField'可能是'JTextArea'或'JTextField'。如果你想在循环中添加多个东西,我认为'setText'会覆盖当前存在的东西,但是append'会增加已经存在的东西。 –

回答

0
outputField.setText(i + ": " + songlist.get(i)); 

因为您正在设置最后一个值而不是附加值。做这样的事情:

StringBuilder string = new StringBuilder(); 
    for (int i = 0; i < songlistsize; i++) { 
      string.append(songlist.get(i)); 
    } 
    outputField.setText(string); 

代码还有很多其他问题,但我坚持要点。

0

如果您尝试在控制台上打印输出,您将看到处理收集的部分正常工作。 但是,由于setText()将当前字符串替换为最新歌曲​​名称,因此只会在收集结束时看到“昨天”。 That's为什么你应该尝试下一首歌曲的名字追加()到您的字符串或者确保您复制当前字符串,添加下一个项目最后使用的setText()

例如:

String string = ""; 
for (int i = 0; i < songlistsize; i++) 
{ 
     string = outputField.getText() + songlist.get(i); 
     outputField.setText(string); 
}