• Java live session problem

    Amit Member

    I have this code taken from. Java Fundamentals I and II and yet I can’t solve this:

    public class Time2
    {
       private int hour;   // 0 - 23
       private int minute; // 0 - 59
       private int second=0; // 0 - 59
     
       // Time2 no-argument constructor: initializes each instance variable
       // to zero; ensures that Time2 objects start in a consistent state
       public Time2()
       {
          this( 0, 0, 0 ); // invoke Time2 constructor with three arguments
       } // end Time2 no-argument constructor
    
       // Time2 constructor: hour supplied, minute and second defaulted to 0
       public Time2( int h )
       {
          this( h, 0, 0 ); // invoke Time2 constructor with three arguments
       } // end Time2 one-argument constructor
    
       // Time2 constructor: hour and minute supplied, second defaulted to 0
       public Time2( int h, int m )
       {
          this( h, m, 0 ); // invoke Time2 constructor with three arguments
       } // end Time2 two-argument constructor
    
       // Time2 constructor: hour, minute and second supplied
       public Time2( int h, int m, int s )
       {
          setTime( h, m, s ); // invoke setTime to validate time
       } // end Time2 three-argument constructor
    
       // Time2 constructor: another Time2 object supplied
       public Time2( Time2 time )
       {
          // invoke Time2 three-argument constructor
          this( time.getHour(), time.getMinute(), time.getSecond() );
       } // end Time2 constructor with a Time2 object argument
    
       // Set Methods
       // set a new time value using universal time; ensure that
       // the data remains consistent by setting invalid values to zero
       public void setTime( int h, int m, int s )
       {
          setHour( h );   // set the hour
          setMinute( m ); // set the minute
          setSecond( s ); // set the second
       } // end method setTime
    
       // validate and set hour
       public void setHour( int h )
       {
          hour= ((h>=0 && h<24) ? h:0;
       
       } // end method setHour
    
       // validate and set minute
       public void setMinute( int m )
       {
         minute= ((m>=0 && m<60) ? m:0;
     
       } // end method setMinute
    
       // validate and set second
       public void setSecond( int s )
       {
           second= ((s>=0 && s<60) ? s:0;
     
       } // end method setSecond
    
       // Get Methods
       // get hour value
       public int getHour()
       {
           return hour;
       } // end method getHour
    
       // get minute value
       public int getMinute()
       {
          return minute;
         
       } // end method getMinute
    
       // get second value
       public int getSecond()
       {
          return second;
       } // end method getSecond
    
       // convert to String in universal-time format (HH:MM:SS)
       public String toUniversalString()
       {
          return String.format(
             "%02d:%02d:%02d", getHour(), getMinute(), getSecond() );
       } // end method toUniversalString
    
       // convert to String in standard-time format (H:MM:SS AM or PM)
       public String toString()
       {
          return String.format( "%d:%02d:%02d %s",
             ( (getHour() == 0 || getHour() == 12) ? 12 : getHour() % 12 ),
             getMinute(), getSecond(), ( getHour() < 12 ? "AM" : "PM" ) );
       } // end method toString
    } // end class Time2
    

    What I need to do is reduce properties in the clas to only one and display everything in seconds. I am not allowed to modify anything except getters and setters...So, can anybody help?

  • Abhey Member

    Given a single property representing the number of seconds, you should be able to break it down into a number of whole hours, whole minutes and remaining seconds.

    Suppose you have 5000 seconds, this is the same as 1 hour, 23 minutes, 20 seconds.

    So store the data in a total_seconds property. Rewrite the getters to use the the right math: getHour() { return total_seconds % 3600;} and so forth. Then the setters do the opposite:

    setHour( int h ) {
    int hr = (h >= 0 && h <= 23) ? h : 0;
    total_seconds = 3600 * hr + 60 * getMinute() + getSecond();
    }
    
Viewing 1 reply thread
  • You must be logged in to reply to this topic.