【问题标题】:How to sort tan array in ascending order and display the sorted array in a JTextArea如何按升序对tan数组进行排序并在JTextArea中显示排序后的数组
【发布时间】:2019-05-26 23:30:55
【问题描述】:

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

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

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

【问题讨论】:

  • 这是一个看起来很奇怪的 Javascript,你能告诉我你使用的是哪个版本,以便我研究它吗?
  • 我相信它是 Java SE,但是,我不确定更多,它只是 Netbeans IDE 8.2 上的默认设置。
  • 它是 Java,而不是 JavaScript(正如 @Snow 已经知道的那样),我已经删除了 javascript 标签,但如果您需要更完整的答案,请考虑创建一个有效的 minimal reproducible example,我们可以运行和测试的代码。请注意,我们不是要求整个程序,只是一个演示问题的小程序。
  • 这个问题最初是作为一个副本关闭的:stackoverflow.com/questions/8938235/sort-an-array-in-java,显然是基于问题标题询问如何按升序对数组进行排序。该帖子中给出的答案都是在添加数据后对数组进行排序。但是,OP 知道 Colloections.sort(...),所以我认为实际的问题是 OP 如何尝试将数据添加到 ArrayList。所以我重新提出了这个问题来解决这个问题。

标签: java arrays swing sorting average


【解决方案1】:

但输出只是用户添加到数组中的最后一个数字。

studentMarks = new ArrayList<Integer>();
studentMarks.add(Integer.parseInt(newMark));

嗯,每次添加标记时都会创建一个新的 ArrayList。

所以当然你只有一个号码。

ArrayList 应该在您的类的构造函数中创建一次,然后您只需将新的 Integer 值添加到 ArrayList。

studentMarksSorted = new ArrayList<Integer>();
studentMarksSorted = studentMarks;

而且没有必要做上面的事情。这不会将数据从一个 ArrayList 复制到另一个。如果要跟踪原始标记和排序标记,则需要手动将整数从一个 ArrayList 复制到另一个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2021-06-10
    • 1970-01-01
    • 2016-02-01
    相关资源
    最近更新 更多