I tested the files "Time2.java" and "Time2Test.java". They worked fine. The following is the output I got: //---------------------------------------------------- fuh- javac Time2Test.java fuh- java Time2Test Constructed with: t1, all arguments defaulted 00:00:00 12:00:00 AM t2: hour specified; minute and second defaulted 02:00:00 02:00:00 AM t3: hour and minute specified; second defaulted 21:34:00 09:34:00 PM t4: hour, minute and second specified 12:25:42 12:25:42 PM t5: all invalid values specified 00:00:00 12:00:00 AM t6: Time2 object t4 specified 12:25:42 12:25:42 PM fuh- //---------------------------------------------------- I have enclosed the files below so you can test run them yourself too. I want you to think about this program this weekend and let me know why it would work next Tuesday. :) FC //---------------------------------------------------------------------- // Time2.java // Time2 class declaration public class Time2 extends Object { private int hour; // 0-23 private int minute; // 0-59 private int second; // 0-59 public Time2( ) { setTime( 0, 0, 0 ); } //{ this(0, 0, 0); } public Time2( int h ) { setTime( h, 0, 0 ); } //{ this(h, 0, 0); } public Time2( int h, int m ) { setTime( h, m, 0 ); } //{ this(h, m, 0); } public Time2( int h, int m, int s ) { setTime( h, m, s ); } //{ this(h, m, s); } public Time2( Time2 time ) { setTime( time.hour, time.minute, time.second ); } public void setTime( int h, int m, int s ) { hour = ( ( h >= 0 && h < 24 ) ? h : 0 ); minute = ( ( m >= 0 && m < 60 ) ? m : 0 ); second = ( ( s >= 0 && s < 60 ) ? s : 0 ); } public int getHour( ) { return hour; } public int getMinute( ) { return minute; } public int getSecond( ) { return second; } // Convert to universal time public String toUniversalString( ) { return String.format( "%02d:%02d:%02d", getHour(), getMinute(), getSecond() ); } // Convert to standard time public String toString( ) { return String.format( "%02d:%02d:%02d %s", ( ( getHour() == 0 || getHour() == 12 ) ? 12: getHour()%12 ), getMinute(), getSecond(), ( getHour() < 12 ? "AM" : "PM" ) ); } } //---------------------------------------------------------------------- //---------------------------------------------------------------------- // Time2Test.java // Using overloaded constructors public class Time2Test { public static void main( String args[ ] ) { Time2 t1 = new Time2( ); Time2 t2 = new Time2( 2 ); Time2 t3 = new Time2( 21, 34 ); Time2 t4 = new Time2( 12, 25, 42 ); Time2 t5 = new Time2( 27, 74, 99 ); Time2 t6 = new Time2( t4 ); System.out.println( "Constructed with: " ); System.out.println( "t1, all arguments defaulted" ); System.out.printf( " %s\n", t1.toUniversalString( ) ); System.out.printf( " %s\n", t1.toString( ) ); System.out.println( "t2: hour specified; minute and second defaulted" ); System.out.printf( " %s\n", t2.toUniversalString( ) ); System.out.printf( " %s\n", t2.toString( ) ); System.out.println( "t3: hour and minute specified; second defaulted" ); System.out.printf( " %s\n", t3.toUniversalString( ) ); System.out.printf( " %s\n", t3.toString( ) ); System.out.println( "t4: hour, minute and second specified" ); System.out.printf( " %s\n", t4.toUniversalString( ) ); System.out.printf( " %s\n", t4.toString( ) ); System.out.println( "t5: all invalid values specified" ); System.out.printf( " %s\n", t5.toUniversalString( ) ); System.out.printf( " %s\n", t5.toString( ) ); System.out.println( "t6: Time2 object t4 specified" ); System.out.printf( " %s\n", t6.toUniversalString( ) ); System.out.printf( " %s\n", t6.toString( ) ); } } //----------------------------------------------------------------------