简易实现:(未考虑越界情况)
class Display { private int value = 0; private int limit = 0;
public Display(int limit) { this.limit = limit; } public void increase() { value++; if(value == limit) { value = 0; } } public int getValue() { return value; } public void setValue(int v) { value = v; }}
public class Clock { private Display hour = new Display(24); private Display minute = new Display(60); private Display second = new Display(60);
public Clock(int hour, int minute, int second) { this.hour.setValue(hour); this.minute.setValue(minute); this.second.setValue(second); } public void tick() { second.increase(); if(second.getValue() == 0) { minute.increase(); if(minute.getValue() == 0) { hour.increase(); } } } public String toString() { return hour.getValue()+":"+minute.getValue()+":"+second.getValue(); } public void print() { System.out.printf("d:d:d\n", hour.getValue(), minute.getValue(), second.getValue()); } public void Start() { while(true) { tick(); print(); } } public static void main(String[] args) { // TODO Auto-generated method stub java.util.Scanner in = new java.util.Scanner(System.in); Clock clock = new Clock(in.nextInt(), in.nextInt(), in.nextInt()); clock.tick();// System.out.println(clock); clock.print(); clock.Start();
in.close(); }}
计时可正常进行。