1. 程式人生 > >Java基礎知識練習02

Java基礎知識練習02

over 代碼 add lis ble edi java基礎知識 println 字符

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 }

Java基礎知識練習02