OJ----成绩排序(Comparator)**

描述

查找和排序

题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩       都按先录入排列在前的规则处理。

   例示:    jack      70    peter     96    Tom       70    smith     67

   从高到低  成绩                peter     96        jack      70        Tom       70        smith     67    

   从低到高

   smith     67  

   Tom       70        jack      70        peter     96      

知识点排序
运行时间限制10M
内存限制128
输入

输入多行,先输入要排序的人的个数,然后分别输入他们的名字和成绩,以一个空格隔开

用户名字,字符串,非空串,长度不超过20;

成绩,整数,范围【0,100】

输入排序方式,0或1,0表示成绩从高到低方式输出名字和成绩,1表示成绩从低到高方式输出名字和成绩


 

输出

按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开

样例输入3 0 fang 90 yang 50 ning 70
样例输出fang 90 ning 70 yang 50

import java.util.*;


public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            int t = scanner.nextInt();
            Student[] students = new Student[n];
            
            for (int i = 0; i < n; i++) {
                String name = scanner.next().trim();
                int score = scanner.nextInt();
                students[i] = new Student(name, score);
            }


            sort(t, students);

            StringBuilder builder = new StringBuilder();
            for (Student s : students) {
                builder.append(s.name).append(" ").append(s.score).append('\n');
            }

            System.out.print(builder.toString());
        }

        scanner.close();
    }

    private static void sort(int t, Main.Student[] students) {
        if (t == 1) {
            Arrays.sort(students, new Comparator<Student>() {
                @Override
                public int compare(Main.Student s, Main.Student t) {
                    return s.score - t.score;
                }
            });
        } else if (t == 0) {
            Arrays.sort(students, new Comparator<Student>() {
                @Override
                public int compare(Main.Student s, Main.Student t) {
                    return t.score - s.score;
                }
            });
        }
    }

    private static class Student {
        private String name;
        private int score;

        public Student(String name, int score) {
            this.name = name;
            this.score = score;
        }
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值