1004成绩排名(详解+代码)

读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。

输入格式:
每个测试输入包含 1 个测试用例,格式为

第 1 行:正整数 n
第 2 行:第 1 个学生的姓名 学号 成绩
第 3 行:第 2 个学生的姓名 学号 成绩
… … …
第 n+1 行:第 n 个学生的姓名 学号 成绩

其中姓名和学号均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。

输出格式:
对每个测试用例输出 2 行,第 1 行是成绩最高学生的姓名和学号,第 2 行是成绩最低学生的姓名和学号,字符串间有 1 空格。

输入样例:
3
Joe Math990112 89
Mike CS991301 100
Mary EE990830 95

输出样例:
Mike CS991301
Joe Math990112

解析:一拿到题,我的思路就是字符串的截取,然后以姓名、学号、成绩为一对存储在map里,以成绩为键,姓名+“ ”+学号为值。最后根据map的键值大小进行输出最高和最低的值。大体的思路就是这些,上代码。

public class Pta_1004 {
    public static void main(String[] args) {
        String name;
        String id;
        int score;
        Map map = new HashMap<Integer, String>();//存储之后的整条数据
        Scanner scanner = new Scanner(System.in);
        int time = Integer.parseInt(scanner.nextLine());
        for (int i = 0; i < time; i++) {//将数据存入map中
            String phane = scanner.nextLine();
           // System.out.println(phane);
            int name_len = phane.indexOf(" ");
            name = phane.substring(0, name_len);
            int id_len = phane.indexOf(" ", name_len + 1);
            id = phane.substring(name_len + 1, id_len);
            score = Integer.parseInt(phane.substring(id_len + 1));
            //因为我们是以score为键,map的键是唯一的,所以score不会重复,我们只需要写以下的条件
            //如果都满足 则添加至map里
            if ( name.length() <= 10 && id.length() <= 10 && 0 <= score && score <= 100) {
                map.put(score, name + " " + id);//按格式 需要一个空格
            }
        }

        //获取键值
        Set set = map.keySet();
        int max_keyname = 0;//最大的键值
        int min_keyname = 0;//最小的键值
        max_keyname = Integer.parseInt(String.valueOf(Collections.max(set)));
        min_keyname = Integer.parseInt(String.valueOf(Collections.min(set)));
//        System.out.println(max_keyname);
//        System.out.println(min_keyname);
        //利用获取到的最大最小键值 获取value
        String zuigao = String.valueOf(map.get(max_keyname));
        System.out.println(zuigao);
        String zuidi = (String) map.get(min_keyname);
        System.out.println(zuidi);

    }
}
发布了42 篇原创文章 · 获赞 1 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41935885/article/details/104050703