最小年龄的3个职工(解题报告)
2017-05-15 18:59
393 查看
题目描述
职工有职工号,姓名,年龄.输入n个职工的信息,找出3个年龄最小的职工打印出来。[b]输入描述:[/b]
输入第一行包括1个整数N,1<=N<=30,代表输入数据的个数。 接下来的N行有N个职工的信息: 包括职工号(整数), 姓名(字符串,长度不超过10), 年龄(1<=age<=100)。
[b]输出描述:[/b]
可能有多组测试数据,对于每组数据, 输出结果行数为N和3的较小值,分别为年龄最小的职工的信息。 关键字顺序:年龄>工号>姓名,从小到大。
[b]输入例子:[/b]
5 501 Jack 6 102 Nathon 100 599 Lily 79 923 Lucy 15 814 Mickle 65
[b]输出例子:[/b]
501 Jack 6 923 Lucy 15 814 Mickle 65
思路:简单的比较器实现,不建议把worker类写成比较类,因为这不符合面向对象的思想。
比较器建议用匿名内部类的形式。
package huazhongUniversity;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class SmallestThree {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String line=null;
while((line=br.readLine())!=null){
int n=Integer.parseInt(line);
ArrayList<Worker> alist=new ArrayList<Worker>();
for(int i=0;i<n;++i){
line=br.readLine();
String [] strs=line.split(" ");
alist.add(new Worker(Integer.parseInt(strs[0]),strs[1],Integer.parseInt(strs[2])));
}
Collections.sort(alist,new Comparator<Worker>(){
public int compare(Worker w1,Worker w2){
if(w1.age<w2.age){
return -1;
}
else if(w1.age>w2.age){
return 1;
}
else{
if(w1.id<w2.id){
return -1;
}
else if(w1.id>w2.id){
return 1;
}
else{
return w1.name.compareTo(w2.name);
}
}
}
});
for(int i=0;i<3;++i){
System.out.println(alist.get(i));
}
}
}
}
class Worker {
int id;
String name;
int age;
Worker(int id,String name,int age){
this.id=id;
this.name=name;
this.age=age;
}
public String toString(){
String s="";
return s+this.id+" "+this.name+" "+this.age;
}
}
相关文章推荐
- 【九度OJ】题目1187:最小年龄的3个职工 解题报告
- 九度OJ 1187:最小年龄的3个职工 (排序)
- 1187 最小年龄的3个职工
- 九度OJ 题目1187:最小年龄的3个职工
- 九度OJ 1187:最小年龄的3个职工 (排序)
- 职工有职工号,姓名,年龄.输入n个职工的信息,找出3个年龄最小的职工打印出来
- 【九度OJ】1187:最小年龄的3个职工
- 题目1187:最小年龄的3个职工
- 最小年龄的3个职工
- 题目1187:最小年龄的3个职工
- 华科机考:最小年龄的3个职工
- 题目1187:最小年龄的3个职工
- C++编程题-职工有职工号,姓名,年龄.输入n个职工的信息,找出3个年龄最小的职工打印出来
- 【九度】题目1187:最小年龄的3个职工
- 题目1187:最小年龄的3个职工
- 最小年龄的3个职工
- 【慢慢学算法】:最小年龄的3个职工(sort对结构体的多级排序)
- 最小年龄的3个职工
- 题目1187:最小年龄的3个职工
- 题目1187:最小年龄的3个职工