如何按升序对tan数组进行排序并在JTextArea中显示排序后的数组

时间:2019-05-26 23:30:56

标签: java arrays swing sorting average

我正在尝试制作一个程序,允许用户将标记插入数组并对其进行排序。我该怎么做?

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");
}                                     

我希望输出是用户以降序数字输入的标记,代替了原始的未排序列表,但是输出只是用户添加到数组中的最后一个数字。

1 个答案:

答案 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。