package proj3; public class Time implements Comparable { private int hour; private int minute; private boolean valid; public Time(int hour, int minute) { this.hour = hour; this.minute = minute; valid = (hour >= 0) && (hour < 24) && (minute >= 0) && (minute < 60); } public int getHour() { return hour; } public int getMinute() { return minute; } public boolean isValid() { return valid; } public Time add(int duration) { if (!valid || (duration < 0)) return new Time(0,-1); int newHour = hour; int newMinute = minute + duration; if (newMinute >= 60) { newHour += newMinute/60; newMinute = newMinute % 60; } return new Time(newHour, newMinute); } // uses 12-hour format, 12 am is midnight, 12 pm is noon // note: no specification of what it does if the time is invalid public String toString() { String ampm = "am"; if (hour >= 12) ampm = "pm"; int displayHour = hour; if (displayHour == 0) displayHour = 12; else if (displayHour > 12) displayHour -= 12; String displayMinute = ""+minute; if (displayMinute.length() == 1) displayMinute = "0" + displayMinute; return displayHour + ":" + displayMinute + " " + ampm; } public int compareTo(Object other) { Time otherTime = (Time)other; if (hour != otherTime.hour) return hour - otherTime.hour; return minute = otherTime.minute; } }