如何在添加元素时输出 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())
我正在制作一个分析一组学生成绩的程序。用户应该能够输入成绩(例如,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())