本文共 1811 字,大约阅读时间需要 6 分钟。
职工有职工号,姓名,年龄.输入n个职工的信息,找出3个年龄最小的职工打印出来。
输入第一行包括1个整数N,1<=N<=30,代表输入数据的个数。
接下来的N行有N个职工的信息: 包括职工号(整数), 姓名(字符串,长度不超过10), 年龄(1<=age<=100)。可能有多组测试数据,对于每组数据,
输出结果行数为N和3的较小值,分别为年龄最小的职工的信息。 关键字顺序:年龄>工号>姓名,从小到大。示例1
5
501 Jack 6 102 Nathon 100 599 Lily 79 923 Lucy 15 814 Mickle 65
501 Jack 6
923 Lucy 15 814 Mickle 65
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Collections;public class Main { static class Worker implements Comparable{ int id; String name; int age; public Worker(int id, String name, int age) { this.id = id; this.name = name; this.age = age; } @Override public String toString() { return id + " " + name + " " + age; } @Override public int compareTo(Worker o) { int num1 = this.age - o.age; int num2 = num1 == 0 ? this.id - o.id : num1; int num3 = num2 == 0 ? this.name.compareTo(o.name) : num2; return num3; } } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); ArrayList list = new ArrayList<>(); //录入 int n = Integer.parseInt(br.readLine()); for (int i = 0; i < n; i++) { String[] s = br.readLine().split(" "); Worker wk = new Worker(Integer.parseInt(s[0]), s[1], Integer.parseInt(s[2])); list.add(wk); } //排序 Collections.sort(list); //输出 int k = Math.min(3, n); for (int i = 0; i < k; i++) { System.out.println(list.get(i)); } }}
转载地址:http://htfgn.baihongyu.com/