评奖I
2018-04-20 本文已影响64人
Airycode
东东所在的班级有 NN 名同学,期末考试进行了数学、语文、英语、地理四门功课的测试。班主任要将这 NN 名学生中总分前三名定为本学期的“学习小标兵”。现在给出这 NN 名学生的姓名和各科成绩,请你编程找到总分前三名,并依次输出他们的姓名。所给数据不会有总分相同的情况。
输入格式
输入包含 N + 1N+1 行,第一行仅有一个正整数 NN (N \leq 40N≤40),表示东东班里学生的总数,接下来的 NN 行,每行描述一个学生的考试信息,依次为姓名、数学成绩、语文成绩、英语成绩与地理成绩,两两之间用一个空格分隔。注意:姓名(不会同名)都用小写字母表示(不超过 1010 个字母),成绩全都是不超过 200200 的非负整数。
输出格式
输出包含三行,每行仅包含一个学生的姓名,依次为第一名到第三名学生的姓名。
样例输入
4
jing 98 90 87 74
ming 96 92 85 97
jun 95 78 56 91
hong 95 100 85 78
样例输出
ming
hong
jing
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
static class Student{
String name;
int math;
int chinese;
int english;
int dili;
int sum;
public Student(String name,int math,int chinese,int english,int dili,int sum){
this.name = name;
this.math=math;
this.chinese=chinese;
this.english = english;
this.dili = dili;
this.sum = sum;
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int N = input.nextInt();
//List<Student> list = new ArrayList<Student>();
Student[] list = new Student[N];
for (int i=0;i<N;i++) {
String name = input.next();
int math = input.nextInt();
int chinese = input.nextInt();
int english = input.nextInt();
int dili = input.nextInt();
int sum = math+chinese+english+dili;
Student s = new Student(name,math,chinese,english,dili,sum);
list[i]=s;
}
//排序
Arrays.sort(list, StudentCompare.studentCompare);
print(list);
}
private static void print(Student[] list) {
if (list != null && list.length>0) {
for (int i=0;i<3;i++) {
System.out.println(list[i].name);
}
}
}
//比较器
static class StudentCompare implements Comparator<Student>{
public static Comparator<Student> studentCompare = new StudentCompare();
public int compare(Student o1, Student o2) {
// TODO Auto-generated method stub
if(o1.sum > o2.sum) return -1;
return 0;
}
}
}