2015-03-29 2 views
1

Задача состоит в организации и отображении пользовательского ввода, соответствующего отметкам.Связанные массивы Java - Отображение int и String?

Например,

Название: Oscar Mark: 25, Имя: Рубин Марк: 45, Имя: Jake Mark: 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 для чего-то вообще; Я знаю, это может показаться глупым или глупым для некоторых более опытных программистов, но я все еще участвую и просто нуждаюсь в помощи со школьной задачей. 0: –

+1

Wow. Это ужасно. Поэтому они рады, что вы создаете сложные графические интерфейсы (операторы импорта значительно упрощают ваш код, кстати, но не используют одну из основных частей Java? Ик. Хорошо, в этом случае я настоятельно рекомендую вам извлечь * соответствующую * часть этого кода (сделать сортировку) из этого почти 200-графического интерфейса в короткое, но полное консольное приложение, чтобы вы могли сосредоточиться на * как раз * эта часть. Затем посмотрите, как вы сортируетесь - на данный момент вы сравниваете * имена *, а не отметки ... –

ответ

2

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

5

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

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

с

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

Я был первоначально сравнивая имена, а не действительных целочисленных значений знаков.

Смежные вопросы