Java编程题,定义一个时钟

定义一个时钟类(Clock)
要求如下:
存储时钟的时hour(0-23)、分minute(0-59)、秒second(0-59);
创建新对象时默认为0时0分0秒;
设置时钟为指定的时间;
使时钟前进1秒钟的功能incSecond();,每5分钟输出一次时间。
以“时:分:秒“的形式输出时钟的时间.
6)CuckooClock 类继承Clock类,重写incSecond();方法,在原有功能的基础上添加输出功能:如果到整点发出布谷的声音。1点发出1声,24点发出24声。
7)使用测试Test类测试上述各个方法。

纯手写,望采纳,祝愿发大财~~~~~

package com.tika;

import org.junit.Test;//

public class Clock {
    
    private int hour;//小时
    private int minute;//分钟
    private int second;//秒钟
    
    public Clock() {//默认构造方法  创建对象时 默认为0:0:0
        
    }
    
    //设置时钟为指定的时间
    public void setClock(int hour,int minute,int second) {
      this.hour     = hour;
      this.minute = minute;
      this.second = second;    
    }
    //使时钟前进1秒钟的功能incSecond();
    public void incSecond() {
        
        //休眠1秒钟 相当于过去1秒钟
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        this.second++;
    }
    
    
    
    //每5分钟输出一次时间
    public void printTimeIn5Minutes() {
        int printCount = 0;//计数
        while(true) {
        
            incSecond();
            if(this.second==60) {//秒钟到了60,调整为0
                this.second = 0;
                 this.minute++;//每60秒为1分钟
                 printCount++;
                 if(printCount==5) {//每5分钟打印一次时间
                     this.printTime();
                     printCount = 0;
                 }
                 
                 if(this.minute == 60) {
                     this.minute = 0;
                     this.hour++;//每60分钟为1小时
                 }
            }
        }
        
    }
    //以“时:分:秒“的形式输出时钟的时间.
    public void printTime() {
        System.out.println("当前时间:"+this.hour+"时:"+this.minute+"分:"+this.second+"秒");
    }

     
    public int getHour() {
        return hour;
    }

    public void setHour(int hour) {
        this.hour = hour;
    }

    public int getMinute() {
        return minute;
    }

    public void setMinute(int minute) {
        this.minute = minute;
    }

    public int getSecond() {
        return second;
    }

    public void setSecond(int second) {
        this.second = second;
    }
    
    //测试Test
    @Test
    public void Test() {
        Clock clock = new Clock();
        //默认时间
        clock.printTime();
        //设置指定时间
        clock.setClock(10, 10, 10);
        //输出当前时间
        clock.printTime();
        //每5分钟输出一次时间
        clock.printTimeIn5Minutes();
        
    }
    
}


package com.tika;
import org.junit.Test;

public class CuckooClock extends Clock{

    //使时钟前进1秒钟的功能incSecond();
    @Override
    public void incSecond() {
        super.incSecond();
        
        if(getSecond()==60) {//秒钟到了60,调整为0
            setSecond(0); 
            setMinute(getMinute()+1);//每60秒为1分钟         
             if(getMinute() == 60) {
                 setMinute(0);
                 setHour(getHour()+1);//每60分钟为1小时
             }
             if(getSecond() == 0 && getMinute() == 0) {//整点时:0分0秒,多少小时则循环几次,输出 布谷声音
                 for(int i = 0;i<getHour();i++) {
                     System.out.println("布谷");
                 }
             }
        }

    }
    
    //测试Test
    @Test
    public void Test() {
        CuckooClock cuckooClock = new CuckooClock();
        cuckooClock.incSecond();
    }
}


操作很简单,建议参考文章练习:
https://blog.csdn.net/wei_zhi/article/details/52780026
https://www.runoob.com/java/java-override-overload.html
https://blog.csdn.net/qq_21907023/article/details/96174077

参考一下

Java 编程题,定义一个时钟类(Clock) null null null https://wenwen.sogou.com/question/q710110433.htm#:~:text=Java%20%E7%BC%96%E7%A8%8B%E9%A2%98%EF%BC%8C%E5%AE%9A%E4%B9%89%E4%B8%80%E4%B8%AA%E6%97%B6%E9%92%9F%E7%B1%BB%EF%BC%88Clock%EF%BC%89%20%E8%A6%81%E6%B1%82%E5%A6%82%E4%B8%8B%3A%201.%E5%AD%98%E5%82%A8%E6%97%B6%E9%92%9F%E7%9A%84%E6%97%B6hour%EF%BC%880-23%EF%BC%89%E3%80%81%E5%88%86minute%EF%BC%880-59%EF%BC%89%E3%80%81%E7%A7%92second%EF%BC%880-59%EF%BC%89%EF%BC%9B,2.%E5%88%9B%E5%BB%BA%E6%96%B0%E5%AF%B9%E8%B1%A1%E6%97%B6%E9%BB%98%E8%AE%A4%E4%B8%BA0%E6%97%B60%E5%88%860%E7%A7%92%EF%BC%9B%203.%E8%AE%BE%E7%BD%AE%E6%97%B6%E9%92%9F%E4%B8%BA%E6%8C%87%E5%AE%9A%E7%9A%84%E6%97%B6%E9%97%B4%EF%BC%9B%204.%E4%BD%BF%E6%97%B6%E9%92%9F%E5%89%8D%E8%BF%9B1%E7%A7%92%E9%92%9F%E7%9A%84%E5%8A%9F%E8%83%BDincSecond%20%28%29%3B%205.%E4%BB%A5%E2%80%9C%E6%97%B6%EF%BC%9A%E5%88%86%EF%BC%9A%E7%A7%92%E2%80%9C%E7%9A%84%E5%BD%A2%E5%BC%8F%E8%BE%93%E5%87%BA%E6%97%B6%E9%92%9F%E7%9A%84%E6%97%B6%E9%97%B4%E3%80%82

Clock.java


/**
 * 
 */
package test;

/**
 * @author zpzhao
 *
 */
public class Clock {
    private int hour = 0;    
    private int minute = 0;    
    private int second = 0;    
    
    final static int MAX_SECOND = 60;
    final static int MAX_MINUTE = 60;
    final static int MAX_HOUR = 24;
    
    /* 时钟滴答 */
    public void incSecond() {
        int min = 0;
        int hour = 0;
        
        if(second == 59)
            min = 1;
        if((min > 0) && (minute == 59))
            hour = 1;        
        
        second = (second + 1) % MAX_SECOND;
        minute = (minute + min) % MAX_MINUTE;
        hour = (hour + hour) % MAX_HOUR;   
        
        ShowPerFiveMinutes();
    }
    
    
    public void ShowPerFiveMinutes() {
        if(((minute % 5) == 0) && (second == 0))
            ShowTime();
    }
    
    public void ShowTime() {
        System.out.printf("time:%02d:%02d:%02d \n",hour,minute,second);
    }
    
    public int getHour() {
        return hour;
    }


    public void setHour(int hour) {
        this.hour = hour;
    }


    public int getMinute() {
        return minute;
    }


    public void setMinute(int minute) {
        this.minute = minute;
    }


    public int getSecond() {
        return second;
    }


    public void setSecond(int second) {
        this.second = second;
    }
    
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Clock ck = new Clock();
        
        System.out.println("hello Clock start");
        
        while(true) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            ck.incSecond();
        }
    }

}



CuckooClock.java

package test;

public class CuckooClock extends Clock {

    
    public CuckooClock() {
        // TODO Auto-generated constructor stub
    }

    
    /* 时钟滴答 */
    public void incSecond() {
        super.incSecond();
        
        if((getMinute() == 0) && (getSecond() == 0))
            ClockChime(getHour());
    }
    
    private void ClockChime(int hour) {
        if( hour == 0)
        {
            ChimeCuckoo(24);
            return ;
        }
        
        ChimeCuckoo(hour);
    }
    
    public void ChimeCuckoo(int n) {
        for(int i=1; i <= n; n++)
            System.out.print("*");
        System.out.println("   Cuckoo ");
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Clock ck = new CuckooClock();
        
        System.out.println("hello Clock start");
        
        while(true) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            ck.incSecond();
        }
    }

}



public class Display {
    private int value=0;
    private int limate=0;
    public void increase() {
        value++;
        if(value==limate) {
            value=0;
        }
    }
    public int getvalue() {
        return value;
    }
    Display(int limate){
        this.limate=limate;
    }
    
}
public class Clock {
    private Display hour=new Display(24);
    private Display minute=new Display(60);
    public void start() {
        while(true) {
            minute.increase();
            if(minute.getvalue()==0) {
                hour.increase();
            }
        System.out.printf("%02d:%02d\n",hour.getvalue(),minute.getvalue());
        }
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Clock shizhong=new Clock();
        shizhong.start();
    }
 
}