再刷PAT系列~成绩排名 (20)

题目描述
读入n名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。

输入描述:
每个测试输入包含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 将姓名 学号 组装成一个 字符串 存为key 分数则为value;第二个难点就是在map中找到最高和最低的分数,这里我们将map的value转成集合数组,利用数组的排序得到最大和最小的value;最后一个难点在于得到相应的key,这里题目中说没有相同的分数,那么就好办了,遍历map的key通过get(key) 依次和value比较,相等的即可~

编码实现:

import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Map<String, Integer> map = new HashMap<String, Integer>();
        while(scanner.hasNext()){
            int n = scanner.nextInt();
            for(int i=0;i<n;i++){
                String name = scanner.next();
                String xh = scanner.next();
                int value = scanner.nextInt();
                String key = name+" "+xh;
                map.put(key, value);
            }
            Collection<Integer> collection = map.values();
            Object[] objects = collection.toArray();
            Arrays.sort(objects);
            Object maxValue = objects[objects.length-1];
            Object minValue = objects[0];
            String maxKey = getKey(map,maxValue);
            String minKey = getKey(map,minValue);
            System.out.println(maxKey);
            System.out.println(minKey);
        }       
    }
    private static String getKey(Map<String, Integer> map, Object value) {
        String key = null;
        for(String getKey:map.keySet()){
            if (map.get(getKey).equals(value)) {
                key = getKey;
            }
        }
        return key;
    }
}

猜你喜欢

转载自blog.csdn.net/xiaozhouchou/article/details/80893504