如何将第二个显示循环添加到下面列出的代码中,以便根据正确答案的数量以降序打印学生。代码已经按递增顺序显示学生,只是没有得到如何添加第二个显示循环以按降序打印。
public class students {
public static void main(String args[]) {
// Students' answers to the questions
char[][] answers = {
{'A', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D'},
{'D', 'B', 'A', 'B', 'C', 'A', 'E', 'E', 'A', 'D'},
{'E', 'D', 'D', 'A', 'C', 'B', 'E', 'E', 'A', 'D'},
{'C', 'B', 'A', 'E', 'D', 'C', 'E', 'E', 'A', 'D'},
{'A', 'B', 'D', 'C', 'C', 'D', 'E', 'E', 'A', 'D'},
{'B', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D'},
{'B', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D'},
{'E', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D'}};
// Key to the questions
char[] keys = {'D', 'B', 'D', 'C', 'C', 'D', 'A', 'E', 'A', 'D'};
int[] correctCounts = new int[answers.length];
// Grade all answers
for (int i = 0; i < answers.length; i++) {
// Grade one student
for (int j = 0; j < answers[i].length; j++) {
if (answers[i][j] == keys[j])
correctCounts[i]++;
}
}
int[] indexList = new int[answers.length];
// Sort totalScores
sortAndKeepIndex(correctCounts, indexList);
// Display result
for (int i = 0; i < correctCounts.length; i++)
System.out.println("Student " + indexList[i] + ": " +
correctCounts[i]);
}
/** The method for sorting the numbers */
static void sortAndKeepIndex(int[] list, int[] indexList) {
int currentMax;
int currentMaxIndex;
// Initialize indexList
for (int i = 0; i < indexList.length; i++)
indexList[i] = i;
for (int i = list.length - 1; i >= 1; i--) {
// Find the maximum in the list[0..i]
currentMax = list[i];
currentMaxIndex = i;
for (int j = i - 1; j >= 0; j--) {
if (currentMax < list[j]) {
currentMax = list[j];
currentMaxIndex = j;
}
}
// Swap list[i] with list[currentMaxIndex] if necessary;
if (currentMaxIndex != i) {
list[currentMaxIndex] = list[i];
list[i] = currentMax;
// Swap the index in indexList too
int temp = indexList[i];
indexList[i] = indexList[currentMaxIndex];
indexList[currentMaxIndex] = temp;
}
}
}
}