求一个班级成绩的平均值和成绩排名(要名次和姓名),姓名用ABC表示。例:第1名:C 100.
import java.util.*;
public class Test {
public static void main(String[] args) {
int[] score = {90,80,70,60,65,75,85,95,100,55,58,61,71,74,76,81,88,92,99,97};
String[] name = new String[20];
for(int i = 0; i < score.length; i++){
name[i] = String.valueOf((char)('A' + i));
}
//存入list用于排序
List<Student> list = new LinkedList<Student>();
int sumScore = 0;
for(int i = 0; i < score.length; i++){
list.add(new Student(name[i], score[i]));
sumScore += list.get(i).getScore();
}
System.out.println("全班平均分为:" + 1.0*sumScore/list.size());
Collections.sort(list, new MyComp());
for(int i = 0; i < list.size(); i++){
System.out.println("第" + (i+1) + "名:" + list.get(i).getName() + " " + list.get(i).getScore());
}
}
}
//学生类
class Student{
private int score;
private String name;
public Student(String name, int score){
this.score = score;
this.name = name;
}
public int getScore(){
return score;
}
public String getName(){
return name;
}
}
//自定义排序
class MyComp implements Comparator<Student>{
public int compare(Student o1, Student o2){
if(o1.getScore() < o2.getScore()) return 1; //分数低的排后面
if(o1.getScore() == o2.getScore()) return 0;
return -1;
}
}