读入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
1 import java.lang.reflect.Array; 2 import java.util.ArrayList; 3 import java.util.Arrays; 4 import java.util.Collections; 5 import java.util.List; 6 import java.util.Scanner; 7 /** 8 * 使用容器自定义排序 9 * @author China 10 * 11 */ 12 13 public class Main { 14 public static void main(String[] args) { 15 List<Student> stds = new ArrayList<Student>(); 16 Scanner input = new Scanner(System.in); 17 int num = Integer.parseInt(input.nextLine()); 18 while(num>0){ 19 String str = input.nextLine(); 20 //System.out.println(str); 21 String[] temp = str.split(" "); 22 Student std = new Student(); 23 std.name = temp[0]; 24 std.stuId = temp[1]; 25 std.score = Integer.parseInt(temp[2]); 26 stds.add(std); 27 num--; 28 } 29 Collections.sort(stds); 30 System.out.println(stds.get(0).name+" "+stds.get(0).stuId); 31 System.out.println(stds.get(stds.size()-1).name+" "+stds.get(stds.size()-1).stuId); 32 } 33 34 } 35 class Student implements Comparable<Student>{ 36 String name; 37 String stuId; 38 int score; 39 @Override 40 public String toString() { 41 return "Student [name=" + name + ", stuId=" + stuId + ", score=" + score + "]"; 42 } 43 @Override 44 public int compareTo(Student o) { 45 // TODO Auto-generated method stub 46 return -(score-o.score); 47 } 48 49 }
时间: 2024-10-09 18:48:40