筆記快記不下去了溺健。蜘醋。荧关。
習(xí)題
1有秒計(jì)時(shí)的數(shù)字時(shí)鐘(10分)
題目?jī)?nèi)容:
這一周的編程題是需要你在課程所給的時(shí)鐘程序的基礎(chǔ)上修改而成羞酗。但是我們并不直接給你時(shí)鐘程序的代碼紊服,請(qǐng)根據(jù)視頻自己輸入時(shí)鐘程序的Display和Clock類的代碼胸竞,然后來(lái)做這個(gè)題目参萄。
我們需要給時(shí)鐘程序加上一個(gè)表示秒的Display,然后為Clock增加以下public的成員函數(shù):
public Clock(int hour, int minute, int second);
用hour, minute和second初始化時(shí)間校赤。
public void tick();
“嘀嗒”一下筒溃,時(shí)間走1秒。
public String toString();
返回一個(gè)String的值浑测,以“hh:mm:ss“的形式表示當(dāng)前時(shí)間歪玲。這里每個(gè)數(shù)值都占據(jù)兩位,不足兩位時(shí)補(bǔ)0岖圈。如“00:01:22"钙皮。注意其中的冒號(hào)是西文的,不是中文的崇摄。提示:String.format()可以用和printf一樣的方式來(lái)格式化一個(gè)字符串慌烧。
另外寫一個(gè)Main類,它的main函數(shù)為下面的樣子厕氨,注意汹粤,必須原封不動(dòng)地作為Main的main函數(shù):
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(); }
注意!在提交的時(shí)候嘱兼,把Main、Clock和Display三個(gè)類的代碼合并在一起汇四,其中Main類是public的,而Clock和Display類是沒(méi)有修飾符的序宦。另外背苦,千萬(wàn)注意第一行不能有package語(yǔ)句。
輸入格式:
采用給定的main函數(shù)無(wú)需考慮輸入輸出秕噪。
輸出格式:
采用給定的main函數(shù)無(wú)需考慮輸入輸出硼讽。
輸入樣例:
采用給定的main函數(shù)無(wú)需考慮輸入輸出。
輸出樣例:
采用給定的main函數(shù)無(wú)需考慮輸入輸出壤躲。
思路
題目與課件里的差別在于多了秒的表示备燃,且需要獲得初始時(shí)間,然后每次tick加1秒漏麦,并且增加一個(gè)輸出打印况褪。
代碼
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);
in.close();
}
}
class Display {
private int value = 0;
private int limit = 0;
public Display(int limit) {
this.limit = limit;
}
//設(shè)置初值
public void setValue(int value) {
this.value = value;
}
public void increase() {
value++;
if(value == limit) {
value = 0;
}
}
public int getValue() {
return value;
}
}
class Clock {
int hour, minute, second;
private Display Hour = new Display(24);
private Display Minute = new Display(60);
private Display Second = new Display(60);
//設(shè)置初值
public Clock(int hour, int minute, int second) {
Hour.setValue(hour);
Minute.setValue(minute);
Second.setValue(second);
}
//tick一次加1秒
public void tick() {
Second.increase();
if(Second.getValue() == 0) {
Minute.increase();
if(Minute.getValue() == 0) {
Hour.increase();
}
}
}
//返回當(dāng)前時(shí)間
public String toString() {
return String.format("%02d:%02d:%02d", Hour.getValue(), Minute.getValue(), Second.getValue());
}
}