定义一个时钟类(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
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();
}
}