Lab10-ArrayOfObjects


5530097721  นายชวพล ประยูรยงค์ (COM22023) (2/20/2013 (3:00:22 PM))

MiniQuiz + TestScript
JLab>java Selftest 

JLab> test1DateConstructor   : ok ok ok ok ok ok ok ok ok ok  (1.0/1.0)
JLab> test2DateCompare       : ok ok ok ok ok ok ok ok ok ok  (1.0/1.0)
JLab> test3MemberConstructor : ok ok ok ok ok ok ok ok ok ok  (1.0/1.0)
JLab> test4SortByBirthDate   : ok ok ok ok ok ok ok ok ok ok  (1.0/1.0)
JLab> : -----------------------------
JLab> : ?????? 4.0 ????? (???? 4.0)
JLab> : -----------------------------
JLab> :<POINT>4.0</POINT> (<TOTAL>4.0</TOTAL> )
JLab>

ได้ 4 คะแนน
Source Code
public class Date {
  public int d;
  public int m;
  public int y; // พ.ศ.
  
  public Date(int d0, int m0, int y0) {
    // เพื่อความง่าย ไม่ต้องตรวจสอบว่า วัน เดือน ปี ที่ได้รับเป็นจำนวนที่ถูกต้องหรือไม่
    d = d0;
    m = m0;
    y = y0;
    


  }
  //-------------------------------------------------------
  public static int compare(Date d1, Date d2) {
    // -1 เมื่อ d1 เป็นวันที่ที่มาก่อน d2
    //  0 เมื่อ d1 เป็นวันที่เดียวกับ d2
    // +1 เมื่อ d1 เป็นวันที่ที่อยู่หลัง d2
    if (d1.y > d2.y) {
      return 1; }
    else if (d1.y < d2.y) {
        return -1; }
    else {
      if (d1.m > d2.m) {
        return 1; }
      else if (d1.m < d2.m) {
        return -1; }
      else {
        if (d1.d > d2.d) {
          return 1; }
        if (d1.d < d2.d) {
          return -1; }
        else { return 0; }
        }
        }            




    


    
  }
  //-------------------------------------------------------
  public static boolean equals(Date d1, Date d2) {
    return d1 != null && d2 != null &&
           d1.y == d2.y && d1.m == d2.m && d1.d == d2.d;
  }
}

public class Member { public String id; public String name; public String bloodGroup; public Date birthDate; public Member(String i, String n, String bg, Date bd) { // เพื่อความง่าย ไม่ต้องตรวจสอบว่า ข้อมูลทั้งหลายที่ได้รับถูกต้องหรือไม่ id = i; name = n; bloodGroup = bg; birthDate=bd; } public static boolean equals(Member m1, Member m2) { return m2 != null && m1.id.equals(m2.id) && m1.name.equals(m2.name) && m1.bloodGroup.equals(m2.bloodGroup) && m2.birthDate != null && Date.equals(m1.birthDate, m2.birthDate); } }
import java.util.Scanner; import java.io.*; public class MyMain { public static void main(String[] args) throws IOException { Member[] members = readMemberFile("members.txt"); sortByBirthDate(members); showMembers(members); } //----------------------------------------------------------------------- public static void sortByBirthDate(Member[] m) { // เรียงลำดับสมาชิกตาง ๆ ในอาเรย์ m ตามอายุสมาชิก จากอายุมากไปอายุน้อย Date[] d = new Date[m.length]; for (int i = 0; i < m.length; i++) { d[i] = new Date(m[i].birthDate.d, m[i].birthDate.m, m[i].birthDate.y); } for (int i = 0; i < d.length; i++) { int maxI = i; for (int j = i; j < d.length; j++) { if (Date.compare(d[maxI], d[j]) == 1) maxI = j; } Date t = d[maxI]; d[maxI] = d[i]; d[i] = t; Member a = m[maxI]; m[maxI] = m[i]; m[i] = a; } ; } //----------------------------------------------------------------------- public static Member[] readMemberFile(String file) throws IOException { Scanner f = new Scanner(new File(file)); int n = f.nextInt(); Member[] members = new Member[n]; for (int i = 0; i < n; i++) { String id = f.next(); String bloodGroup = f.next(); int d = f.nextInt(); int m = f.nextInt(); int y = f.nextInt(); String name = f.nextLine(); members[i] = new Member(id, name, bloodGroup, new Date(d, m, y)); } f.close(); return members; } //----------------------------------------------------------------------- public static void showMembers(Member[] members) { for (int i = 0; i < members.length; i++) { System.out.println(members[i].id + " " + members[i].bloodGroup + " " + members[i].birthDate.d + " " + members[i].birthDate.m + " " + members[i].birthDate.y + " " + members[i].name); } } }
SM=0, CM=24, ST=35, KY=939, TR=60:00
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;
ERR = 60:00 ;