首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 類與物件實戰:設計 Clock 類別實現時間顯示與驗證

     編輯:Java 綜合教學

需求分析

設計一個時鐘類 Clock,包含:

  • 三個 int 型別成員變數:hour、minute、second
  • 建構子初始化三個欄位
  • show() 方法顯示時間,並驗證合法性 (時 0-23、分/秒 0-59)
  • 主類建立多個物件測試各種邊界情況

Clock 類別實作

public class Clock {
    private int hour;      // 封裝:私有欄位
    private int minute;
    private int second;
    
    // 建構子初始化
    public Clock(int hour, int minute, int second) {
        this.hour = hour;
        this.minute = minute;
        this.second = second;
    }
    
    // 顯示時間並驗證
    public void show() {
        if (isValidTime()) {
            System.out.printf("現在時刻 %02d時 %02d分 %02d秒。%n", hour, minute, second);
        } else {
            System.out.println("你輸入的時間有誤,請重新輸入!");
        }
    }
    
    // 驗證邏輯獨立封裝
    private boolean isValidTime() {
        return hour >= 0 && hour < 24 
            && minute >= 0 && minute < 60 
            && second >= 0 && second < 60;
    }
    
    // Getter/Setter (擴充用)
    public int getHour() { return hour; }
    public void setHour(int hour) { this.hour = hour; }
    // ... minute, second 同理
}

測試主類

public class TestClock {
    public static void main(String[] args) {
        // 正常時間
        Clock c1 = new Clock(3, 34, 18);
        Clock c2 = new Clock(23, 34, 18);
        Clock c6 = new Clock(0, 0, 0);
        
        // 邊界錯誤時間
        Clock c3 = new Clock(25, 15, 55); // 時 > 23
        Clock c4 = new Clock(23, 64, 28); // 分 > 59
        Clock c5 = new Clock(23, 54, 78); // 秒 > 59
        
        // 批次測試
        Clock[] clocks = {c1, c2, c3, c4, c5, c6};
        for (Clock c : clocks) {
            c.show();
        }
    }
}

執行結果

現在時刻 03時 34分 18秒。
現在時刻 23時 34分 18秒。
你輸入的時間有誤,請重新輸入!
你輸入的時間有誤,請重新輸入!
你輸入的時間有誤,請重新輸入!
現在時刻 00時 00分 00秒。

程式執行結果截圖

關鍵知識點總結

  1. 封裝性:欄位 private,透過建構子/方法存取
  2. 建構子:同名無回傳型別,物件建立時自動呼叫
  3. this 關鍵字:區分參數與欄位 (this.hour = hour)
  4. 輸入驗證:防禦性程式設計,保護物件狀態一致性
  5. 格式化輸出:printf / String.format 統一格式 (%02d 補零)
  6. 物件陣列/集合批次操作:減少重複代碼

進階擴充建議

  • 拋出異常替代列印錯誤:throw new IllegalArgumentException("Invalid time")
  • 使用 java.time.LocalTime 替代手工實作 (Java 8+)
  • 增加 tick() 方法模擬秒針走動
  • 實作 Comparable<Clock> 支援時間比較排序
  • 覆寫 toString()、equals()、hashCode()
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved