Explanation:
Complete Program:
NOTE: The newly added statements are highlighted in bold.
// File: Time2.java
public class Time2
{
private int hour; // 0 - 23
private int minute; // 0 - 59
private int second; // 0 - 59
public Time2()
{
this(0, 0, 0);
}
public Time2(int hour)
{
this(hour, 0, 0);
}
public Time2(int hour, int minute)
{
this(hour, minute, 0);
}
public Time2(int hour, int minute, int second)
{
if(hour < 0 || hour >= 24)
throw new IllegalArgumentException("hour must be 0-23");
if(minute < 0 || minute >= 60)
throw new IllegalArgumentException("minute must be 0-59");
if(second < 0 || second >= 60)
throw new IllegalArgumentException("second must be 0-59");
this.hour = hour;
this.minute = minute;
this.second = second;
}
public Time2(Time2 time)
{
this(time.getHour(), time.getMinute(), time.getSecond());
}
public void setTime(int hour, int minute, int second)
{
if(hour < 0 || hour >= 24)
throw new IllegalArgumentException("hour must be 0-23");
if(minute < 0 || minute >= 60)
throw new IllegalArgumentException("minute must be 0-59");
if(second < 0 || second >= 60)
throw new IllegalArgumentException("second must be 0-59");
this.hour = hour;
this.minute = minute;
this.second = second;
}
public void setHour(int hour)
{
if(hour < 0 || hour >= 24)
throw new IllegalArgumentException("hour must be 0-23");
this.hour = hour;
}
public void setMinute(int minute)
{
if(minute < 0 || minute >= 60)
throw new IllegalArgumentException("minute must be 0-59");
this.minute = minute;
}
public void setSecond(int second)
{
if(second < 0 || second >= 60)
throw new IllegalArgumentException("second must be 0-59");
this.second = second;
}
public int getHour()
{
return hour;
}
public int getMinute()
{
return minute;
}
public int getSecond()
{
return second;
}
public String toUniversalString()
{
return String.format("%02d:%02d:%02d", getHour(), getMinute(),
getSecond());
}
public String toString()
{
return String.format("%d:%02d:%02d %s",
((getHour() == 0 || getHour() == 12) ? 12 : getHour() % 12),
getMinute(), getSecond(), (getHour() < 12 ? "AM" : "PM"));
}
// increment second
public void tick()
{
if(second < 23)
{
second++;
}
else if(minute < 59)
{
second = 0;
minute++;
}
else if(hour < 23)
{
second = 0;
minute = 0;
hour++;
}
else
{
second = 0;
minute = 0;
hour = 0;
}
}
// increment minute
public void incrementMinute()
{
if(minute < 59)
{
minute++;
}
else if(hour < 23)
{
minute = 0;
hour++;
}
else
{
minute = 0;
hour = 0;
}
}
public void incrementHour()
{
if(hour < 23)
{
hour++;
}
else
{
hour = 0;
}
}
}
------------------------------------------------------------------------------------------------------------
// File: Time2Test.java
public class Time2Test
{
public static void main( String args[] )
{
Time2 t = new Time2(22, 58, 59);
System.out.println("Starting time: ");
System.out.println("Time in 24 hours format: " + t.toUniversalString());
System.out.println("Time in 12 hours format: " + t);
System.out.println();
t.incrementMinute();
System.out.println("After incrementing one minute: ");
System.out.println("Time in 24 hours format: " + t.toUniversalString());
System.out.println("Time in 12 hours format: " + t);
System.out.println();
t.incrementHour();
System.out.println("After incrementing one hour: ");
System.out.println("Time in 24 hours format: " + t.toUniversalString());
System.out.println("Time in 12 hours format: " + t);
System.out.println();
t.tick();
System.out.println("After incrementing one second: ");
System.out.println("Time in 24 hours format: " + t.toUniversalString());
System.out.println("Time in 12 hours format: " + t);
System.out.println();
}
}