| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- public class Clock {
- private static final int MINUTES_IN_AN_HOUR = 60;
- private static final int HOURS_IN_A_DAY = 24;
-
- private int hours;
- private int minutes;
-
- public Clock(int hours, int minutes) {
- this.hours = hours;
- this.minutes = minutes;
- sanitiseTime();
- }
-
- public void add(int minutes) {
- this.minutes += minutes;
- sanitiseTime();
- }
-
- private void sanitiseTime() {
- while (minutes < 0) {
- minutes += MINUTES_IN_AN_HOUR;
- hours--;
- }
- while (hours < 0) {
- hours += HOURS_IN_A_DAY;
- }
- int minutesOverflow = minutes / MINUTES_IN_AN_HOUR;
- minutes = minutes % MINUTES_IN_AN_HOUR;
- hours = (hours + minutesOverflow) % HOURS_IN_A_DAY;
- }
-
- @Override
- public String toString() {
- return toTimeString(hours) + ":" + toTimeString(minutes);
- }
-
- private String toTimeString(int number) {
- if (number < 10) return "0" + number;
- return String.valueOf(number);
- }
-
- @Override
- public boolean equals(Object obj) {
- if (!(obj instanceof Clock)) return false;
-
- Clock clock = (Clock) obj;
- return hours == clock.hours && minutes == clock.minutes;
- }
- }
|