任务是组织和显示与标记对应的用户输入。
例如,
姓名:奥斯卡马克: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 :(得分:5)
问题的正确解决方案是替换
if (ArrNames[i].compareTo(ArrNames[j]))
带
if (ArrMarks[i] < ArrMarks[j])
我最初是在比较名称,而不是Marks的实际整数值。
答案 1 :(得分:2)
您的要求表明您希望按mark
订购,但您需要按name
进行比较。