PAT乙级:1004 成绩排名(Java)
微信公众号请搜索:【Codeplus】
作者 CHEN, Yue
单位 浙江大学
代码长度限制 16 KB
时间限制 400 ms
内存限制 64 MB
描述:读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。
题解:通过一个while循环控制依次输入一位同学的所有信息,将这些信息存储为一个字符串形式,这个字符串通过调用split()方法使用空格作为字符串分隔符,将这个字符串转换为字符数组,字符数组最后一个即是输入的成绩的字符串形式,再将其转换为整型,进行比较,找出最高分与最低分,最后的输出信息为姓名和学号,即重新合并字符数组成一个字符串形式输出。
完整代码:
import java.util.Scanner;
public class Test4 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt(); //键盘输入获取学生个数
int max = 0, min = 100; //设置最高分和最低分的初始值
String maxInfo = "", minInfo = "";
//nextLine()读取了上一次输入nextInt()留下的“\n”,所以没有给用户输入(软件认为用户输了一个”\n”),而是直接换行了
scanner.nextLine();//消除换行符影响,提前吞掉空格,防止后面吞掉
while (number > 0) {
//使用split()方法将输入的字符串以空格为间隔符将字符串分成字符数组
String[] str = scanner.nextLine().split(" ");
//str[2]中存取的是分数字符,转换为整型
int score = Integer.parseInt(str[2]);
String info = str[0] + " " + str[1];//将姓名和学号合并一个字符串
//比较分数,交换分数以及字符串信息
if (score > max) {
max = score;
maxInfo = info;
}
if (score < min) {
min = score;
minInfo = info;
}
number--;
}
//输出结果
System.out.println(maxInfo);
System.out.println(minInfo);
}
}
提交结果: