欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【JAVA】1004 成绩排名 (20分) PAT乙级 PAT (Basic Level) Practice(中文)

程序员文章站 2024-03-19 08:37:52
...

前言

学得越多,不会得越多
种一颗树的最佳时间是十年前,其次就是现在

pat所有题解代码都会陆续上传到Github,请好兄弟们自行下载:https://github.com/233zzh/PAT
qq交流群:1107710098

题目:1004 成绩排名 (20分)

读入 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

要点:题目中说n(>0),所以n可能为1

代码

import java.util.Scanner;

/**
 * Created by IntelliJ IDEA.
 *
 * @Author: 张志浩 Zhang Zhihao
 * @Email: [email protected]
 * @Date: 2020/11/26
 * @Time: 19:06
 * @Version: 1.0
 * @Description: Description
 */
public class Rank {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        if (n == 1) {
            String name = sc.next();
            String num = sc.next();
            System.out.println(name + " " + num);
            System.out.println(name + " " + num);
            return;
        }
        int min = Integer.MAX_VALUE;
        int max = Integer.MIN_VALUE;
        String min_name = null;
        String max_name = null;
        String min_num = null;
        String max_num = null;
        while (n-- > 0) {
            String name = sc.next();
            String num = sc.next();
            int grade = sc.nextInt();
            if (grade < min) {
                min = grade;
                min_name = name;
                min_num = num;
            } else if (grade > max) {
                max = grade;
                max_name = name;
                max_num = num;
            }
        }
        sc.close();
        System.out.println(max_name + " " + max_num);
        System.out.println(min_name + " " + min_num);
    }
}