我正在尝试制作一个程序,允许用户将标记插入数组并对其进行排序。我该怎么做?
private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {
String newMark;
newMark = userText.getText().substring(0, 1).toUpperCase() + userText.getText().substring(1);
if (Integer.parseInt(newMark) <= 100 && Integer.parseInt(newMark) >= 0) {
studentMarks = new ArrayList<Integer>();
studentMarks.add(Integer.parseInt(newMark));
markDisplay.append(studentMarks +"\n");
} else {
markDisplay.append("Only marks between \n 0 and 100 are accepted. \n");
}
}
private void sortButtonActionPerformed(java.awt.event.ActionEvent evt) {
studentMarksSorted = new ArrayList<Integer>();
studentMarksSorted = studentMarks;
Collections.sort(studentMarksSorted);
markDisplay.setText(studentMarksSorted + "\n");
}
我希望输出是用户以降序数字输入的标记,代替了原始的未排序列表,但是输出只是用户添加到数组中的最后一个数字。
答案 0 :(得分:0)
但是输出只是用户添加到数组的最后一个数字。
studentMarks = new ArrayList<Integer>();
studentMarks.add(Integer.parseInt(newMark));
好吧,每次添加标记都会创建一个新的ArrayList。
因此,您当然只有一个号码。
应该在类的构造函数中创建一次ArrayList,然后只需将新的Integer值添加到ArrayList。
studentMarksSorted = new ArrayList<Integer>();
studentMarksSorted = studentMarks;
并且不需要执行上述操作。那不会将数据从一个ArrayList复制到另一个。如果要跟踪原始标记和排序标记,则需要将Integers从一个ArrayList手动复制到另一个ArrayList。