如何在添加元素时输出 ArrayList 的元素?

How to output elements of an ArrayList as elements are being added?

我正在制作一个分析一组学生成绩的程序。用户应该能够输入成绩(例如,92、80 或 50),并且当他们按下“添加”按钮时,它们应该出现在提供的文本区域中。我正在使用整数 ArrayList 将所有这些标记添加为元素,并按升序正确显示它们。当我尝试这样做时,输出仅显示我输入的数字,并在我添加新数字后替换此数字。如果我尝试添加一个更小的数字,它只会保留之前的数字。我觉得我的逻辑全错了。这是我到目前为止的代码:

private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {                                          
    Integer grade;
    grade = Integer.parseInt(markInput.getText()); //I convert the String to Integer to be able to add it to the ArrayList
    if (grade >=0 & grade <=100){
        marksListing(); //This calls the method that actually displays the items in the ArrayList
    }
    else {
    errorLabel.setText("Invalid grade. Please enter a number between 0 and 100.");
    }
}                                         
private void marksListing() {
    Integer grade;
    grade = Integer.parseInt(markInput.getText());
    marks.add(grade);
    Collections.sort(marks);
for (Integer mark : marks) {
    markBox.setText(String.valueOf(mark));
}

我研究了很长时间,找不到解决方法。任何帮助表示赞赏。谢谢

问题出在最后的 for 循环中:setText 设置了 markBox 的完整文本,即您每次都覆盖了最后一个值。您需要将新标记添加到当前框中的文本中,例如

markBox.setText(markBox.getText() + String.valueOf(mark));

在两者之间,您可能希望根据自己的喜好添加分隔符。在 for 循环之外,文本应在添加标记之前初始化为空字符串。

我假设您想要列出数字,每行一个?如果是这样,您只需要建立一个大字符串,用逗号分隔数字,然后将其放入您的文本字段。参见 StringBuilder

下面是一些伪代码:

StringBuilder sb = new StringBuilder()
for(...){
    sb.append(mark).append("\n")
}
markBox.setText(sb.toString())