Linked Arrays Java - 显示int和String?

时间:2015-03-29 13:17:38

标签: java arrays

任务是组织和显示与标记对应的用户输入。

例如,

  

姓名:奥斯卡马克:25,姓名:鲁宾马克:45,姓名:杰克马克:13

所以它应该显示:

Rubin 45
Oscar 25
Jake 13

当前代码仅显示名称和标记,但不按排列顺序显示。 我怀疑它可能与intString有关,但我不完全确定。

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

2 个答案:

答案 0 :(得分:5)

问题的正确解决方案是替换

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

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

我最初是在比较名称,而不是Marks的实际整数值。

答案 1 :(得分:2)

您的要求表明您希望按mark订购,但您需要按name进行比较。