1. 程式人生 > >java_有秒計時的數字時鐘

java_有秒計時的數字時鐘

題目內容:

這一週的程式設計題是需要你在課程所給的時鐘程式的基礎上修改而成。但是我們並不直接給你時鐘程式的程式碼,請根據視訊自己輸入時鐘程式的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 }