我首先在程序的另一部分创建了一个arraylist,然后用于循环将它放在文本区域中。现在,我想从文本字段中获取输入,将其添加到arraylist,并显示整个数组,包括添加的新元素。我再次尝试使用for循环,但是当我点击"添加"在运行时,程序只是冻结而没有任何反应。有什么建议? 谢谢。
private void btnDisplayActionPerformed(java.awt.event.ActionEvent evt) {
// Using a for loop to display unsorted list, sorting the list, then using a for loop again to display the sorted list
String strUnsortedList = "";
for(int i = 0; i < strCDNames.size(); i++) {
strUnsortedList += strCDNames.get(i) + "\n";
}
Collections.sort(strCDNames);
String strSortedList = "";
for(int i = 0; i < strCDNames.size(); i++) {
strSortedList += strCDNames.get(i) + "\n";
}
txtOutput.setText("Unsorted Order: \n" + strUnsortedList + "\nSorted Order: \n" + strSortedList);
}
private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {
String strAddedList = "";
for (int i = 0; i < strCDNames.size(); i++) {
strAddedList += strCDNames.add(txtInputTitleArtist.getText());
}
txtOutput.setText(" " + strAddedList);
}
答案 0 :(得分:2)
for (int i = 0; i < strCDNames.size(); i++) {
strAddedList += strCDNames.add(txtInputTitleArtist.getText());
}
这是一个无限循环。您不断添加到列表中,这意味着列表大小将继续增加。因此i
总是小于strCDNames.size()
。
相反,你可以这样做:
strCDNames.add(txtInputTitleArtist.getText());
String strAddedList = String.join(" ", strCDNames);
答案 1 :(得分:0)
Vivin是对的。我只想补充一点,arraylist add方法返回一个布尔值(https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html#add-E-)。因此,在这种情况下,strAddedList甚至不会被正确更新。