在Java中,你可以使用多种方法对学生的总分进行排序。以下是一些常见的方法:
1. 使用`Arrays.sort`方法:
int[][] scores = { {80, 90, 70}, {60, 70, 80}, {90, 80, 70} };
int[] sum = new int[scores.length];
// 计算每个学生的总成绩并存储到一维数组中
for (int i = 0; i < scores.length; i++) {
int total = 0;
for (int j = 0; j < scores[i].length; j++) {
total += scores[i][j];
}
sum[i] = total;
}
// 对一维数组进行排序
Arrays.sort(sum);
// 输出排序后的结果
for (int i = 0; i < sum.length; i++) {
System.out.println("第 " + (i + 1) + " 名: 总成绩为 " + sum[i] + ",详细成绩为 " + Arrays.toString(scores[i]));
}
2. 使用`TreeSet`和自定义比较器:
import java.util.TreeSet;
import java.util.Comparator;
class Student {
String name;
int math, english, chinese;
int sum;
Student(String name, int math, int english, int chinese) {
this.name = name;
this.math = math;
this.english = english;
this.chinese = chinese;
this.sum = math + english + chinese;
}
}
public class SortTotalScore {
public static void main(String[] args) {
Student[] students = new Student;
students = new Student("三年二班", 93, 84, 54);
students = new Student("三年二班", 77, 87, 41);
students = new Student("三年二班", 54, 75, 41);
// 使用TreeSet和自定义比较器进行排序
TreeSet
sortedStudents = new TreeSet<>(new Comparator () { @Override
public int compare(Student s1, Student s2) {
if (s1.sum != s2.sum) {
return Integer.compare(s2.sum, s1.sum);
} else if (s1.math != s2.math) {
return Integer.compare(s2.math, s1.math);
} else if (s1.english != s2.english) {
return Integer.compare(s2.english, s1.english);
} else {
return Integer.compare(s1.name.compareTo(s2.name));
}
}
});
sortedStudents.addAll(Arrays.asList(students));
// 输出排序后的结果
for (Student student : sortedStudents) {
System.out.println(student);
}
}
}
3. 使用`Arrays.binarySearch`方法:
int[][] scores = { {80, 90, 70}, {60, 70, 80}, {90, 80, 70} };
int[] sum = new int[scores.length];
// 计算每个学生的总成绩并存储到一维数组中
for (int i = 0; i < scores.length; i++) {
int total = 0;
for (int j = 0; j < scores[i].length; j++) {
total += scores[i][j];
}
sum[i] = total;
}
// 对一维数组进行排序
Arrays.sort(sum);
// 使用二分查找确定排名
for (int i = 0; i < sum.length; i++) {
int rank = scores.length - Arrays.binarySearch(sum, sum[i]);
System.out.println("第 " + (rank + 1) + " 名: 总成绩为 " + sum[i] + ",详细成绩为 " + Arrays.toString(scores[i]));
}
以上代码示例展示了如何使用不同的方法对学生的总分进行排序。你可以根据具体需求选择合适的方法。如果你有任何其他