Lab10-ArrayOfObjects


5531020521  นายณัฐดนัย กชมนสัมพันธ์ (COM21900) (2/13/2013 (12:25:10 PM))

MiniQuiz + TestScript
JLab>javac Date.java Member.java MyMain.java
JLab>
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;
  
  if (d1.m < d2.m) return -1;
  else if (d1.m > d2.m) return 1;
  
  if (d1.d < d2.d) return -1;
  else if (d1.d > d2.d) return 1;
  
  if(d1.d==d2.d) return 0;



     


    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 ตามอายุสมาชิก จากอายุมากไปอายุน้อย for (int i = m.length - 1; i >= 1; i--) { for (int j = 0; j < i; j++) { if (Date.compare(m[j].birthDate, m[j + 1].birthDate) == -1); else if (Date.compare(m[j].birthDate, m[j + 1].birthDate) == 0); else { Member tmp = m[j+1]; m[j + 1] = m[j]; m[j]= tmp;} } } } //----------------------------------------------------------------------- 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=4, CM=14, ST=19, KY=973, 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 ;