Как отсортировать массив tan в порядке возрастания и отобразить отсортированный массив в JTextArea - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь создать программу, которая позволяет пользователю вставлять метки в массив и сортировать их.Как мне это сделать?

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 голосов
/ 27 мая 2019

но вместо этого выводом было только последнее число, добавленное пользователем в массив.

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

Ну, вы создаете новый ArrayList каждый раз, когда добавляете отметку.

Так что, конечно, у вас есть только одно число.

ArrayList должен быть создан один раз в конструкторе вашего класса, а затем вы просто добавляете новые значения Integer в ArrayList.

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

И нет необходимости делать это выше. Это не копирует данные из одного ArrayList в другой. Если вы хотите отслеживать исходные метки и отсортированные метки, то вам нужно вручную скопировать целые числа из одного ArrayList в другой.

...