评奖I

东东所在的班级有 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;
        }
    } 
    
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数组索引 这样声明个数组,名为radius,含3个int型元素。我们可通过radius[0],radius[1],...
    夏威夷的芒果阅读 4,503评论 1 0
  • 生活大爆炸版石头剪刀布 题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,...
    bbqub阅读 3,332评论 0 0
  • 这篇本该完成于昨日的命题作文在闺蜜的劝说下留给了今日的自己。 昨天实在是收东西忙得晕头转向,四肢勤快之下便非常不想...
    王家人宁阅读 2,981评论 0 0
  • 每天对Carol 要出的题目都有些好奇和期待,问题看着好简单,却经常问的我懵懵的。当这个问题出现时,我发现我是个特...
    夕彦阅读 3,233评论 1 0