lots of exercises in java... from https://github.com/exercism/java

Clock.java 1.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. public class Clock {
  2. private static final int MINUTES_IN_AN_HOUR = 60;
  3. private static final int HOURS_IN_A_DAY = 24;
  4. private int hours;
  5. private int minutes;
  6. public Clock(int hours, int minutes) {
  7. this.hours = hours;
  8. this.minutes = minutes;
  9. sanitiseTime();
  10. }
  11. public void add(int minutes) {
  12. this.minutes += minutes;
  13. sanitiseTime();
  14. }
  15. private void sanitiseTime() {
  16. while (minutes < 0) {
  17. minutes += MINUTES_IN_AN_HOUR;
  18. hours--;
  19. }
  20. while (hours < 0) {
  21. hours += HOURS_IN_A_DAY;
  22. }
  23. int minutesOverflow = minutes / MINUTES_IN_AN_HOUR;
  24. minutes = minutes % MINUTES_IN_AN_HOUR;
  25. hours = (hours + minutesOverflow) % HOURS_IN_A_DAY;
  26. }
  27. @Override
  28. public String toString() {
  29. return toTimeString(hours) + ":" + toTimeString(minutes);
  30. }
  31. private String toTimeString(int number) {
  32. if (number < 10) return "0" + number;
  33. return String.valueOf(number);
  34. }
  35. @Override
  36. public boolean equals(Object obj) {
  37. if (!(obj instanceof Clock)) return false;
  38. Clock clock = (Clock) obj;
  39. return hours == clock.hours && minutes == clock.minutes;
  40. }
  41. }