2006 Time Interval Appointment
<< 2007GameState | APQuestionsTrailIndex | 2006TaxableItem >>
Question from the College Board
This is a quick version... time here is represented merely an integer, to keep the coding quick... in reality, we probably should make a Time Class which has hours and minutes, and define a compareTo method in the time class, rather that just use an integer.... in this version, appointments can only be made on the hour, and we represent 1 PM as 13, and no care is taken about intervals that span across midnight.
TimeInterval
public class TimeInterval { private int beginTime; private int endTime; public TimeInterval(int b, int e) { beginTime = b; endTime = e; } public int getBeginTime(){return beginTime;} public int getEndTime(){return endTime;} public boolean overlapsWith(TimeInterval interval) { //Maria Litvin's fancy way in one line: return !(beginTime >= interval.getEndTime() || endTime <= interval.getBeginTime()); //Fr Chris' clunky but hopefully clearer way: if( interval.getBeginTime()>=endTime ) return false; //interval begins after then end if( interval.getEndTime()<=beginTime ) return false; //interval ends before the start return true; } public String toString() { return beginTime + "-" + endTime; } }
Appointment
public class Appointment { private TimeInterval time; public Appointment(TimeInterval time) { this.time = time; } public TimeInterval getTime() { return time; } public boolean conflictsWith(Appointment other) { // part a } public String toString() { return time.toString(); } }
DailySchedule
import java.util.ArrayList; public class DailySchedule { // contains Appointment objects, no two Appointments overlap private ArrayList apptList; public DailySchedule() { apptList = new ArrayList(); } public void clearConflicts(Appointment appt) { //part b here } public boolean addAppt(Appointment appt, boolean emergency) { //part c here } public String toString() { return apptList.toString(); } }
AppointmentDriver to test out your results
public class AppointmentDriver { public static void main(String[] args) { DailySchedule schedule = new DailySchedule(); System.out.println("6-8 added: " + schedule.addAppt(new Appointment(new TimeInterval(6, 8)), false)); System.out.println("8-9 added: " + schedule.addAppt(new Appointment(new TimeInterval(8, 9)), false)); System.out.println("11-12 added: " + schedule.addAppt(new Appointment(new TimeInterval(11, 12)), false)); System.out.println("12-14 added: " + schedule.addAppt(new Appointment(new TimeInterval(12, 14)), false)); System.out.println("10-12 added: " + schedule.addAppt(new Appointment(new TimeInterval(10, 12)), false)); System.out.println("10-12 added (emergency): " + schedule.addAppt(new Appointment(new TimeInterval(10, 12)), true)); System.out.println("The Day's schedule:\n"+schedule); } }