CS99 |
Fundamental Programming Concepts
Summer 2001 |
|
Lab 9: Solutions
class Time { private int hour; /* 0-23 */ private int minute; /* 0-59 */ private int second; /* 0-59 */ /** * Default constructor for class Time * Initializes all the variables to zero. */ public Time() { setTime( 0, 0, 0 ); } /** * Construct a Time object given a time in hours * @param h the time in hours */ public Time( int h ) { setTime( h, 0, 0 ); } /** * Construct a Time object given a time in hours and minutes * @param h the hours * @param m the minutes */ public Time( int h, int m ) { setTime( h, m, 0 ); } /** * Construct a Time object given a time in hours, minutes, and seconds * @param h the hours * @param m the minutes * @param s the seconds */ public Time( int h, int m, int s ) { setTime( h, m, s ); } // Set Methods /** * Set a new Time value using military time. * @param h the hours * @param m the minutes * @param s the seconds */ public void setTime( int h, int m, int s ) { setHour( h ); setMinute( m ); setSecond( s ); } /** * Set the hours. Perform validity checks on the data. Set invalid values to zero. * @param h the hours */ public void setHour( int h ) { if ( h >= 0 && h < 24 ) hour = h; else hour = 0; } /** * Set the minutes. Perform validity checks on the data. Set invalid values to zero. * @param m the minutes */ public void setMinute( int m ) { if ( m >= 0 && m < 60 ) minute = m; else minute = 0; } /** * Set the seconds. Perform validity checks on the data. Set invalid values to zero. * @param s the seconds */ public void setSecond( int s ) { if ( s >= 0 && s < 60 ) second = s; else second = 0; } // Get methods /** * Return the hour. */ public int getHour() { return hour; } /** * Return the minute. */ public int getMinute() { return minute; } /** * Return the second. */ public int getSecond() { return second; } /** * Convert the time to a String in military-time format. */ public String toMilitaryString(){ String miliTime = ""; if ( hour < 10 ) miliTime += "0" + hour + ":"; else miliTime += hour + ":"; if ( minute < 10 ) miliTime += "0" + minute + ":"; else miliTime += minute + ":"; if ( second < 10 ) miliTime += "0" + second; else miliTime += second; return miliTime; } /** * Convert the time to a String in standard-time format. */ public String toString() { String standardTime = ""; int sHour = 0; if ( hour == 0 ) sHour = 12; else sHour = hour%12; standardTime += sHour + ":"; if ( minute < 10 ) standardTime += "0" + minute + ":"; else standardTime += minute + ":"; if ( second < 10 ) standardTime += "0" + second; else standardTime += second; if ( hour > 12 ) standardTime += "PM"; else standardTime += "AM"; return standardTime; } } |
TimeTest.txt
Enter an hour, minute, and second: 18 30 22
Military Time: 18:30:22
Standard Time: 6:30:22PM
Would you like to continue (y/n)? y
Enter an hour, minute, and second: 5 14 59
Military Time: 05:14:59
Standard Time: 5:14:59AM
Would you like to continue (y/n)? n
ModifiedTime.java
class ModifiedTime {
/*CODE FOR REST OF CLASS SAME AS TIME.JAVA */ /* Increments the time by one hour. Maintains consistent time state. */ public void incrementHour() { hour = ( hour + 1 )%24; } /** * Increments the time stored by one minute. Maintains consistent time * state * by calling incrementHour() if change in minute moves to next hour. */ public void incrementMinute() { minute = (minute + 1)%60; if ( minute == 0 ) incrementHour(); } /* Increments the time stored by one second. Maintains object in consistent state */ public void tick() { second = (second + 1)%60; if ( second == 0 ) incrementMinute(); } }
TimeIncrement.java
class TimeIncrement { public static void main( String[] args ) { TokenReader in = new TokenReader( System.in ); int hours, mins, secs; ModifiedTime t = new ModifiedTime( 5, 6, 59 ); System.out.println("Military Time: " + t.toMilitaryString() ); System.out.println("Standard Time: " + t.toString() ); System.out.println("Incrementing into the next minute: "); t.tick(); System.out.println("Military Time: " + t.toMilitaryString() ); System.out.println("Standard Time: " + t.toString() ); System.out.println("\n\nNew time."); t = new ModifiedTime( 5, 59, 45 ); System.out.println("Military Time: " + t.toMilitaryString() ); System.out.println("Standard Time: " + t.toString() ); System.out.println("Incrementing into the next hour: "); t.incrementMinute(); System.out.println("Military Time: " + t.toMilitaryString() ); System.out.println("Standard Time: " + t.toString() ); System.out.println("\n\nNew time."); t = new ModifiedTime( 23, 59, 59 ); System.out.println("Military Time: " + t.toMilitaryString() ); System.out.println("Standard Time: " + t.toString() ); System.out.println("Incrementing into the next day: "); t.tick(); System.out.println("Military Time: " + t.toMilitaryString() ); System.out.println("Standard Time: " + t.toString() ); } } /** OUTPUT: Military Time: 05:06:59 Standard Time: 5:06:59AM Incrementing into the next minute: Military Time: 05:07:00 Standard Time: 5:07:00AM New time. Military Time: 05:59:45 Standard Time: 5:59:45AM Incrementing into the next hour: Military Time: 06:00:45 Standard Time: 6:00:45AM New time. Military Time: 23:59:59 Standard Time: 11:59:59PM Incrementing into the next day: Military Time: 00:00:00 Standard Time: 12:00:00AM */