1 最小年龄的3个职工
题目描述:
职工有职工号,姓名,年龄.输入n个职工的信息,找出3个年龄最小的职工打印出来。
输入描述:
输入第一行包括1个整数N,1<=N<=30,代表输入数据的个数。接下来的N行有N个职工的信息:包括职工号(整数), 姓名(字符串,长度不超过10), 年龄(1<=age<=100)。
输出描述:
可能有多组测试数据,对于每组数据,输出结果行数为N和3的较小值,分别为年龄最小的职工的信息。关键字顺序:年龄>工号>姓名,从小到大。
输入例子:
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
1 package Test; 2 /*List是一个接口,而ArrayList是List接口的一个实现类。 ArrayList类继承并实现了List接口。 3 * List list = new ArrayList(),list只有List的方法,对ArrayList独有的方法是无法继承的 4 * 为什么要用 List list = new ArrayList() ,而不用 ArrayList alist = new ArrayList()呢? 5 问题就在于List接口有多个实现类,现在你用的是ArrayList,也许哪一天你需要换成其它的实现类,如 6 LinkedList或者Vector等等,这时你只要改变这一行就行了: List list = new LinkedList(); 其它使用了list地方的代码根 7 本不需要改动。 假设你开始用ArrayList alist = new ArrayList(), 这下你有的改了,特别是如果你使用了ArrayList实现类特有的方法和属性。 8 * 9 */ 10 11 import java.io.BufferedInputStream; 12 import java.util.ArrayList; 13 import java.util.Collections; 14 import java.util.List; 15 import java.util.Scanner; 16 17 public class Main { 18 public static void main(String args[]) { 19 Scanner sc = new Scanner(new BufferedInputStream(System.in)); 20 while (sc.hasNext()) { 21 List<Employee> list=new ArrayList<>(); 22 int n=sc.nextInt(); 23 sc.nextLine(); 24 for(int i=0;i<n;i++){ 25 String[] str=sc.nextLine().split(" "); 26 int id=Integer.parseInt(str[0]); 27 String name=str[1]; 28 int age =Integer.parseInt(str[2]); 29 Employee employee =new Employee(id, age, name); 30 list.add(employee); 31 } 32 Collections.sort(list); 33 34 if(list.size()<=3){ 35 for(Employee e:list){ 36 System.out.println(e);//正是改写了toString方法才可以直接输出 37 } 38 }else{ 39 System.out.println(list.get(0)); 40 System.out.println(list.get(1)); 41 System.out.println(list.get(2)); 42 } 43 } 44 } 45 } 46 47 //定义员工类 48 class Employee implements Comparable<Employee>{ 49 //上面用到了Collections.sort方法,在这个类中要实现Comparable,对这块还是不很清楚 50 private int id; 51 private int age; 52 private String name; 53 54 public Employee(int id,int age,String name){ 55 this.id=id; 56 this.age=age; 57 this.name=name; 58 } 59 60 public int compareTo(Employee e){ 61 if(this.age==e.age){ 62 if(this.id==e.id){ 63 return this.name.compareTo(e.name); 64 }else{ 65 return this.id-e.id; 66 } 67 }else{ 68 return this.age-e.age; 69 } 70 } 71 //toString默认返回类中对象在堆中的内存地址,我们想让它直接按照要求格式输出就要重写该方法 72 @Override 73 public String toString() { 74 // TODO Auto-generated method stub 75 return id+" "+name+" "+age; 76 } 77 }
2 成绩排序
题目描述
用一维数组存储学号和成绩,然后,按成绩排序输出。
输入描述:
输入第一行包括一个整数N(1<=N<=100),代表学生的个数。
接下来的N行每行包括两个整数p和q,分别代表每个学生的学号和成绩。
输出描述:
按照学生的成绩从小到大进行排序,并将排序后的学生信息打印出来。
如果学生的成绩相同,则按照学号的大小进行从小到大排序。
示例1
输入
3
1 90
2 87
3 92
输出
2 87
1 90
3 92
1 package Test; 2 //实现了Comparable接口,及在Arrays的运用参考API手册 3 import java.util.Arrays; 4 import java.util.Scanner; 5 6 public class Main{ 7 public static void main(String[] args) { 8 Scanner sc=new Scanner(System.in); 9 int n=sc.nextInt(); 10 Student[] arr=new Student[n]; 11 for(int i=0;i<n;i++){ 12 arr[i]=new Student(sc.nextInt(),sc.nextInt()); 13 } 14 Arrays.sort(arr); 15 for(Student s:arr){ 16 System.out.println(s); 17 } 18 } 19 } 20 class Student implements Comparable<Student>{ 21 private int id; 22 private int score; 23 public Student(int id, int score) { 24 super(); 25 this.id = id; 26 this.score = score; 27 } 28 29 public int compareTo(Student s){ 30 if(this.score>s.score) return 1; 31 else if(this.score==s.score){ 32 if(this.id>s.id) return 1; 33 else return -1; 34 }else{ 35 return -1; 36 } 37 } 38 @Override 39 public String toString() { 40 return id+" "+score; 41 } 42 43 }
3 查找学生信息
题目描述
输入N个学生的信息,然后进行查询。
输入描述:
输入的第一行为N,即学生的个数(N<=1000)
接下来的N行包括N个学生的信息,信息格式如下:
01 李江 男 21
02 刘唐 男 23
03 张军 男 19
04 王娜 女 19
然后输入一个M(M<=10000),接下来会有M行,代表M次查询,每行输入一个学号,格式如下:
02
03
01
04
输出描述:
输出M行,每行包括一个对应于查询的学生的信息。
如果没有对应的学生信息,则输出“No Answer!”
示例1
输入
4
01 李江 男 21
02 刘唐 男 23
03 张军 男 19
04 王娜 女 19
5
02
03
01
04
03
输出
02 刘唐 男 23
03 张军 男 19
01 李江 男 21
04 王娜 女 19
03 张军 男 19
1 package Test; 2 //不用创建student对象直接存储到map中 3 import java.util.HashMap; 4 import java.util.Map; 5 import java.util.Scanner; 6 7 public class Main{ 8 public static void main(String[] args) { 9 Scanner sc=new Scanner(System.in); 10 while(sc.hasNext()){ 11 int n=sc.nextInt(); 12 sc.nextLine();//吸收换行键 13 Map<String,String> map=new HashMap<String,String>(); 14 for(int i=0;i<n;i++){ 15 String str=sc.nextLine(); 16 String[] arr=str.split(" "); 17 String id=arr[0]; 18 map.put(id, str); 19 } 20 int m=sc.nextInt(); 21 for(int i=0;i<m;i++){ 22 String key=sc.next(); 23 if(map.get(key)==null){ 24 System.out.println("No Answer!"); 25 }else{ 26 System.out.println(map.get(key)); 27 } 28 } 29 } 30 } 31 }