题目: 使用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、主函数就是让用户输入三个数,之后让程序输出下一时刻时间值。