Erlo

java_有秒计时的数字时钟

2018-12-15 22:01:37 发布   979 浏览  
页面报错/反馈
收藏 点赞

题目内容:

这一周的编程题是需要你在课程所给的时钟程序的基础上修改而成。但是我们并不直接给你时钟程序的代码,请根据视频自己输入时钟程序的Display和Clock类的代码,然后来做这个题目。

我们需要给时钟程序加上一个表示秒的Display,然后为Clock增加以下public的成员函数:

 

public Clock(int hour, int minute, int second);

    用hour, minute和second初始化时间。

public void tick();

    “嘀嗒”一下,时间走1秒。

public String toString();

    返回一个String的值,以“hh:mm:ss“的形式表示当前时间。这里每个数值都占据两位,不足两位时补0。如“00:01:22"。注意其中的冒号是西文的,不是中文的。

 

提示:String.format()可以用和printf一样的方式来格式化一个字符串。

 

另外写一个Main类,它的main函数为下面的样子,注意,必须原封不动地作为Main的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);

in.close();

}

 

注意!在提交的时候,把Main、Clock和Display三个类的代码合并在一起,其中Main类是public的,而Clock和Display类是没有修饰符的。另外,千万注意第一行不能有package语句。

 

输入格式:

采用给定的main函数无需考虑输入输出。

 

输出格式:

采用给定的main函数无需考虑输入输出。

 

输入样例:

采用给定的main函数无需考虑输入输出。

 

输出样例:

采用给定的main函数无需考虑输入输出。

时间限制:500ms内存限制:32000kb

 1 //主函数按题要求不动
 2 public class Main {
 3 
 4     public static void main(String[] args) {
 5         java.util.Scanner in = new java.util.Scanner(System.in);
 6         Clock clock = new Clock(in.nextInt(), in.nextInt(), in.nextInt());
 7         clock.tick();
 8         System.out.println(clock);
 9         in.close();
10     }
11 }
12 
13 
14 //时钟时分秒都要显示,所以先建立一个显示的类
15 class Display{
16     private int value=0;//显示数字
17     private int limit=0;//上限值
18 
19 //构造函数,初始化,这里为设定上限值
20     public Display(int limit){
21         this.limit=limit;//把limit传给本类的limit
22     }
23 
24 //设定时间的值的函数
25     public void setValue(int value) {
26         this.value=value;
27     }
28 
29 //得到显示值函数
30     public int getValue() {
31         return value;
32     }
33 
34 //时间数值增加1函数
35     public void increase() {
36         value++;
37         if(value==limit) {//如果值增到了上限值
38             value=0;//值置0
39         }
40     }
41 }
42 
43 
44 //建立一个表示时钟的类
45 class Clock {
46     //这个时钟有时分秒三个成员
47     //因为是用Display类显示所以类型为Display
48     private Display hour = new Display(24);//时,上限为24
49     private Display minute = new Display(60);//分,上限为60
50     private Display second = new Display(60);//秒,上限为60
51 
52 //构造函数,初始化,用于设定时分秒的初始值
53     public Clock(int hour,int minute,int second) {
54         this.hour.setValue(hour);
55         this.minute.setValue(minute);
56         this.second.setValue(second);
57     }
58 
59 //“嘀嗒”一下,时间走1秒
60     public void tick(){
61         this.second.increase();//秒走一秒
62         if(this.second.getValue()==0) {//零,即达上限,被置零
63             this.minute.increase();//分走一下
64             if(this.minute.getValue()==0) {//如果秒达上限值
65                 this.hour.increase();//时走一下
66             }
67         }
68     }
69     
70 //    把Clock类的对象转化为字符串类型,用于输出
71     public String toString() {
72         //String.format()可以用和printf一样的方式来格式化一个字符串
73         String time= String.format("%02d:%02d:%02d", this.hour.getValue(), this.minute.getValue(), this.second.getValue());
74         return time;
75     }
76 }

 

登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

手机查看

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认