所以在这个课程中,我要问的是一班学生的大小,考虑每个学生以及与他们相关的成绩。 myStudents [i]然后保存每个学生的姓名和成绩。我现在遇到的问题是我的selectionSort。我应该按成绩安排每个学生(从最高到最低。我认为我在公共静态无效选择(学生[] myStudents)中做得正确,但我不确定我应该如何使用for循环打印出来当我打电话给selectionSort。任何建议指出我正确的方向将非常感谢。谢谢!
import java.util.Scanner;
public class Final4{
public static void main(String[] args) {
Scanner myInput=new Scanner(System.in);
System.out.print("Enter the size of the class: ");
int num = myInput.nextInt();
int array[] = new int[num];
double score;
student[] myStudents = new student[num];
for (int i = 0 ; i < array.length; i++ ) {
System.out.print("Please enter a student name: ");
myInput.useDelimiter(System.getProperty("line.separator"));
String s;
s = myInput.next();
System.out.print("Please enter " + s +"'s score: ");
score = myInput.nextDouble();
myStudents[i] = new student(s, score);
}
}
selectionSort()
public static void selectionSort(student[] myStudents) {
for (int i = myStudents.length-1; i>0; i--){
int maxIndex = 0;
student max = myStudents[0];
for (int j=1; j<=i; j++)
if (myStudents[j].getScore() > (max.getScore())) {
maxIndex = i;
}
student temp = myStudents[i];
myStudents[i] = myStudents[maxIndex];
myStudents[maxIndex] = temp;
}
}
}
class student {
String name;
double score;
student(String name, double score) {
this.name = name;
this.score = score;
}
public double getScore() {
return score;
}
public String getName() {
return name;
}
}
一旦我开始合并获取和对象,我往往会有点困惑。再次,非常感谢任何建议。
答案 0 :(得分:1)
所以你的问题是如何打印按照排序排序的selectionSort(myStudents);
for(Student s: myStudents) {
System.out.println(s.getName() + " " + s.getScore());
}
数组,对吗?
在main方法上,在循环条件之后(在创建Student数组时)添加此代码。
{{1}}
该代码将打印您的学生阵列。