Welp, another problem arise albeit small. Just with Decrementing hours, seconds, and minutes. I seem not get the final results right at all. Keep tinkering with it, and still not getting it.
This is my answer 23:00:00
23:00:00
23:00:00.
First is right, but the 2nd and 3rd should be 22:58:00 and 22:57:59
Therefore any help appreciated on with the decrement part. The first program is what i'm working on which is line 105 to 134. The 2nd program is for execution. Line 47 to 58 is what i'm trying to get the answer on. Not sure if the coding will be too long, will happily edit.
public class Clock
{
private int hr; //store hours
private int min; //store minutes
private int sec; //store seconds
public Clock()
{
setTime(0, 0, 0);
}
public Clock(int hours, int minutes, int seconds)
{
setTime(hours, minutes, seconds);
}
public void setTime(int hours, int minutes, int seconds)
{
if (0 <= hours && hours < 24)
hr = hours;
else
hr = 0;
if (0 <= minutes && minutes < 60)
min = minutes;
else
min = 0;
if (0 <= seconds && seconds < 60)
sec = seconds;
else
sec = 0;
}
public int getHours()
{
return hr;
}
public int getMinutes()
{
return min;
}
public int getSeconds()
{
return sec;
}
public void printTime()
{
if (hr < 10)
System.out.print("0");
System.out.print(hr + ":");
if (min < 10)
System.out.print("0");
System.out.print(min + ":");
if (sec < 10)
System.out.print("0");
System.out.print(sec);
}
public void incrementSeconds()
{
sec++;
if (sec > 59)
{
sec = 0;
incrementMinutes(); //increment minutes
}
}
public void incrementMinutes()
{
min++;
if (min > 59)
{
min = 0;
incrementHours(); //increment hours
}
}
public void incrementHours()
{
hr++;
if (hr > 23)
hr = 0;
}
public void decrementHours()
{
hr--;
if(hr< 23)
hr = 23;
}
public void decrementMinutes()
{
min--;
if(min < 59)
{
min = 0;
decrementHours();
}
}
public void decrementSeconds()
{
sec--;
if(sec < 59)
{
sec = 0;
decrementMinutes();
}
}
public boolean equals(Clock otherClock)
{
return (hr == otherClock.hr
&& min == otherClock.min
&& sec == otherClock.sec);
}
public void makeCopy(Clock otherClock)
{
hr = otherClock.hr;
min = otherClock.min;
sec = otherClock.sec;
}
public Clock getCopy()
{
Clock temp = new Clock();
temp.hr = hr;
temp.min = min;
temp.sec = sec;
return temp;
}
public String toString() {
return String.format("%02d:%02d:%02d",hr, min, sec);
}
}
import java.util.*;
public class TestProgClock
{
static Scanner console = new Scanner(System.in);
public static void main(String[] args)
{
Clock clock1 = new Clock(5, 4, 30); // 5:4:30 am
Clock clock2 = new Clock(); // default time 0:0:0
Clock clock3 = new Clock(9,59,00); // 9:59:00 am
System.out.println( "clock1 should be 05:04:30, and it is " + clock1.toString());
System.out.println( "clock2 should be 00:00:00, and it is " + clock2.toString());
System.out.println( "clock3 should be 09:59:00, and it is " + clock3.toString());
System.out.println( "clock2 is changed to 05:45:16");
clock2.setTime(5, 45, 16); // change time to 05:45:16
System.out.println( "clock2 should be 05:45:16, and it is " + clock2.toString());
if (clock1.equals(clock2))
System.out.println("clock1 is equal to clock2 (wrong)");
else
System.out.println("clock1 is not equal to clock2 (correct)");
System.out.println( "clock1 is incremented by one second");
clock1.incrementSeconds();
System.out.println( "clock1 should be 05:04:31, and it is " + clock1.toString());
System.out.println( "clock1 is incremented by 2 minutes");
clock1.incrementMinutes();
clock1.incrementMinutes();
System.out.println( "clock1 should be 05:06:31, and it is " + clock1.toString());
System.out.println( "clock1 is incremented by one hour");
clock1.incrementHours();
System.out.println( "clock1 should be 06:06:31, and it is " + clock1.toString());
clock3.makeCopy(clock1);
System.out.println("After copying "
+ "clock1 into clock3, clock3 is "
+ clock3);
Clock clock4 = new Clock(); // set to 00:00:00
System.out.println( "clock4 is decremented by one hour");
clock4.decrementHours();
System.out.println( "clock4 should be 23:00:00, and it is " + clock4.toString());
System.out.println( "clock4 is decremented by 2 minutes");
clock4.decrementMinutes();
clock4.decrementMinutes();
System.out.println( "clock4 should be 22:58:00, and it is " + clock4.toString());
System.out.println( "clock4 is decremented by one second");
clock4.decrementSeconds();
System.out.println( "clock4 should be 22:57:59, and it is " + clock4.toString());
}//end main
}