Связанные массивы Java - отображение int и String?

1

Задача состоит в организации и отображении пользовательского ввода, соответствующего отметкам.

Например,

Имя: Оскар Марк: 25, Имя: Рубин Марк: 45, Имя: Джейк Марк: 13

Поэтому он должен отображать:

Rubin 45
Oscar 25
Jake 13

В текущем коде отображаются только имена и метки, но не в упорядоченном порядке. Я подозреваю, что это может иметь отношение к int и String, но я не совсем уверен.

private void btnEnterActionPerformed(java.awt.event.ActionEvent evt) {                                         
    for (int i = 0; i < 5; i++) {
        ArrNames[i] = JOptionPane.showInputDialog("Enter a Name:");
        ArrMarks[i] = Integer.parseInt(JOptionPane.showInputDialog("Enter a    mark:"));  
    }      
}                                        

private void btnSortActionPerformed(java.awt.event.ActionEvent evt) {                                        
    for (int i = 0; i < 5 - 1; i++) {
        for (int j = i +1; j < 5; j++) {
            if (ArrNames[i].compareTo(ArrNames[j]); //>0 sorts in ascending          order  <0 sorts in descending order ==0 tests for duplicate string value
            //using .compareTo because checking 2 names
            {
               //sorting the names
               String temp = ArrNames[i];
               ArrNames[i] = ArrNames[j];
               ArrNames[j] = temp;

               //sorting the marks
               int temp1 = ArrMarks[i];
               ArrMarks[i] = ArrMarks[j];
               ArrMarks[j] = temp1;       
            }     
        }   
    }
}                                       

private void btnDisplayActionPerformed(java.awt.event.ActionEvent evt) {                                           
    for (int i = 0; i < 5; i++) {
         txaDisplay.append(ArrNames[i] + "\t\t" + ArrMarks[i] + "\n");
    }
}  
  • 0
    Я настоятельно рекомендую создать класс для StudentResult или чего-то подобного, в котором есть как имя, так и знак. Тогда вам нужна только одна коллекция. Вы также должны сделать ваш код легче для чтения, отформатировав его ...
  • 0
    Наш учитель на самом деле не хочет, чтобы мы были вовлечены в занятия, я имею в виду, что это должно просто потребовать небольших изменений. То, как нас учили, заключается в том, что нам нужен цикл for для чего угодно; Я знаю, что это может показаться глупым или глупым для некоторых более опытных программистов, но я все еще учусь и просто нуждаюсь в помощи со школьным заданием
Показать ещё 7 комментариев
Теги:
arrays

2 ответа

5

Правильное решение вопроса заключается в замене

if (ArrNames[i].compareTo(ArrNames[j]))

с

if (ArrMarks[i] < ArrMarks[j])

Первоначально я сравнивал имена, а не фактические целочисленные значения Marks.

2

Ваши требования говорят, что вы хотите, чтобы это было заказано по mark, и все же вы сравниваете по name.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню