PRELOADER

不念过去 不负现在 不畏将来

当前文章 : 《模拟时钟》

12/4/2018 —— 

题目: 使用java语言创建一个模拟时钟,要求可以从外部输入三个数字表示原始时间,程序返回下一时刻,返回格式为tt:mm:ss

要求: 创建三个类,一个为Display,一个为Clock,一个为Main。第一个类用于显示两位数,这个数有一个初值,有一个限制值,有一个加一的方法和一个放回当前值的方法。第二个类用于包含三个第一类对象,用于表示时分秒。这个类可以设置初值,可以设置显示数字之间的逻辑。第三个类就是主函数,用于控制该程序实现的功能。在这里为返回下一秒的时间,而时间上可以让程序不断的执行,即不断输出时间。

Java代码:

  • Display类
package clock;

public class Display {

    int value = 0;
    int limit = 0;

    public void increase() {
        this.value++;
        if (value == limit) {
            value = 0;
        }
    }

   //设置最大值
    public void setLimit(int x) {
        this.limit = x;

    }

    //返回当前值
    public int getValue() {
        return value;
    }

    //用于测试该类功能是否正确
   public static void main(String[] args) {
       Display d1 = new Display();
       while (true) {
           d1.limit = 60;
           d1.increase();
        System.err.println(d1.getValue());
       }
   }

}
  • Clock类

package clock;
public class Clock {

    Display ss = new Display();
    Display mm = new Display();
    Display tt = new Display();

    public Clock (int t,int m,int s) {
        ss.value = s;
        mm.value = m;
        tt.value = t;
        ss.setLimit(60);
        mm.setLimit(60);
        tt.setLimit(24);
    }

    //模拟表示增加一秒
    public void tick() {
        ss.increase();
        if (ss.value == 0) {
            mm.increase();
            if (mm.value == 0) {
                tt.increase();
            }
        }
    }

    //标准化的方式返回一个时间字符串
    public String toString() {
        return String.format("%02d:%02d:%02d",tt.value,mm.value,ss.value);
    }

   public static void main(String[] args) {
       Clock clock = new Clock();
       clock.ss.limit = 60;
       clock.mm.limit = 60;
       clock.tt.limit = 24;
       for(;;) {
           clock.tick();
           System.out.printf("%02d:%02d:%02d\n", clock.tt.value,clock.mm.value,clock.ss.value);
       }
   }
}
  • Mian类
package clock;
public class Main {
  public static void main(String[] args) {
      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.toString());
      in.close();
  }
}
  • 1、这个程序用于模拟时钟,采用面向对象的设计方式。首先分析出用于显示可以为一个类,这个类主要用于显示一个两位数,所以创建一个这样的对象就可以显示一个两位数,因此表示完整的时间需要三个这样的类。这个类需要一个初值,需要一个限制值,因为小时不会超过24,分和秒不会超过60.另外这个类还需要一种方法,用于返回当前的值。
  • 2、其次,时间管理为另外一个类,这个类首先就要包含三个Display对象,用于显示时分秒。其次这个类会有一个构造函数用于初始化三个Display对象的初值和限制值。此外,这个类还应该具有表示时间走一秒这样的逻辑,并控制分钟时钟的进位表示。
  • 3、主函数就是让用户输入三个数,之后让程序输出下一时刻时间值。