3360 學生資訊的新增與查詢 (Java)
阿新 • • 發佈:2019-01-25
學生資訊的新增與查詢
Time Limit: 1000 ms Memory Limit: 65536 KiBProblem Description
設計一個學生新增和查詢的系統,從鍵盤讀入學生的資料,然後再從螢幕顯示出來。Input
第一行有2個整數N和M,其中:N——學生數量,M——學生屬性數量;第二行有M個字串,表示學生的屬性名稱,其中第1個屬性id表示關鍵字;其中各欄位屬性的資料型別是確定的。
接下來有N行M列資料,分別表示學生各種屬性的值,關鍵字相同的記錄代表一個學生(後來讀入的資訊覆蓋前面讀入資料)
Output
輸出所有學生的屬性及資料。(每行的列資料之間用‘\t’進行分隔)Sample Input
5 4 id name birthday score 0001 Mike 1990-05-20 98.5 0002 John 1992-05-20 67 0003 Hill 1994-05-02 36.5 0004 Christ 1996-05-20 86.5 0001 Jack 1998-05-20 96
Sample Output
id:0001 name:Jack birthday:1998_5_20 score:96.0 id:0002 name:John birthday:1992_5_20 score:67.0 id:0003 name:Hill birthday:1994_5_2 score:36.5 id:0004 name:Christ birthday:1996_5_20 score:86.5
Code
反思:Java的集合框架練習。用HashMap儲存學生的資訊,因為要按照id排序輸出學生資訊,所以把map的keySet()放進連結串列list中,對list進行排序,再通過map的鍵值對輸出學生資訊。import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; public class Main { public static void main(String[] args) throws ParseException { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); String s1 = sc.nextLine(); String s2 = sc.nextLine(); SimpleDateFormat pattern1 = new SimpleDateFormat("yyyy-MM-dd"); Map<String, Student> map = new HashMap<String, Student>(); for (int i = 0; i < n; i++) { String id = sc.next(); Student s = new Student(sc.next(), pattern1.parse(sc.next()), sc.nextFloat()); map.put(id, s); } LinkedList<String> list = new LinkedList<String>(map.keySet()); Collections.sort(list); for (int i = 0; i < list.size(); i++) { System.out.print("id:" + list.get(i)); System.out.println(map.get(list.get(i))); } sc.close(); } } class Student { String name; Date birthday; float score; SimpleDateFormat pattern2 = new SimpleDateFormat("yyyy_M_d"); Student(String n, Date b, float s) { name = n; birthday = b; score = s; } @Override public String toString() { return "\tname:" + name + "\tbirthday:" + pattern2.format(birthday) + "\tscore:" + score; } }