因此,我应该创建一个要求类大小的程序。然后使用该大小,输入学生姓名和分数,直到填满班级大小。完成此操作后,我应该调用一个selectionSort方法以按降序对分数进行排序。因此,输出本质上是一个表。一列是名称,另一列是分数,并且分数应该以其适当的名称降序排列。我把大部分程序都弄下来了,我只是想不通如何将学生的名字与他们输入的分数联系起来。有人可以引导我正确行事吗?我很茫然。这是我的程序:
import java.util.Scanner;
public class Roster {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
input.useDelimiter(System.getProperty("line.separator"));
System.out.print("Enter the size of the class: ");
int size = input.nextInt();
double[]score = new double[size];
String[]name = new String[size];
for(int i = 0; i < size; i++){
System.out.print("Please enter a student name: ");
String n = input.next();
name[i] = n;
System.out.print("Please enter " + n + "'s score: ");
double s = input.nextDouble();
score[i] = s;
System.out.println();
}
selectionSort(score,name);
System.out.print("THe class size is: " + size + "\n");
System.out.print("Name Score\n");
System.out.print("---- -----\n");
for(int i = 0; i < name.length; i++)
System.out.println(name[i] + " " + score[i] + " ");
System.out.println();
}
public static void selectionSort(double[] score, String[] name){
for(int i = score.length-1; i > 0; i--){
int maxIndex = 0;
for(int j = 1; j <= i; j++)
if(score[j] < score[maxIndex])
maxIndex = j;
double temp = score[i];
score[i] = score[maxIndex];
score[maxIndex] = temp;
}
}
}
最佳答案
我已经评论了一个简单的解决方案,但实际上最好的办法是创建一个名册条目类:
public class RosterEntry {
private String name;
private double score;
/*Accessors and Mutators*/
}
然后,在您的
main
中,您可以维护RosterEntry
的列表或数组,以便在选择排序中进行交换时,可以交换RosterEntry
而不是分别替换分数和名称。