题目内容:
这一周的编程题是需要你在课程所给的时钟程序的基础上修改而成。但是我们并不直接给你时钟程序的代码,请根据视频自己输入时钟程序的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函数无需考虑输入输出。
三个类(三段)
------------------1------------------接收输入的时间,调用方法走一秒,调用方法输出
package clock;
public class Main{
public static void main(String[] args) {
java.util.Scanner in = new java.util.Scanner(System.in);//作用等于import java类库的Scanner
Clock clock = new Clock(in.nextInt(), in.nextInt(), in.nextInt());//new一个clock类的对象,接收输出的时间,直接输入数字不用冒号00 07 09 ,用in对象接收输入的数字
clock.tick(); //调用函数走一秒
System.out.println(clock);//输出一个类的对象会调用这个类的toString方法(规定)
in.close();
}
}
---------------2----------------------初始化限制时间,实现走一秒,判断分钟和时间的增加值,返回时间给mian类
package clock;
public class Clock{
private Display hour=new Display(24);//分别new一个Didplay类型的对象接收初始化限制时间,
private Display minute=new Display(60);
private Display second=new Display(60);
public Clock(int hour,int minute,int second){//创建与类同名方法,接收mian类中clock对象传递的时间值
this.hour.setValue(hour);//调用Clock类中hour对象,调用函数setValue并传递hour时间参数
this.minute.setValue(minute);
this.second.setValue(second);
}
public void tick(){//定义方法tick ,滴答走一秒
second.increase();//调用走一秒函数
if(second.getValue()==0){//调用函数获得时间值并判断是否已重置零
{
minute.increase();//注意花括号,表示增加的连续性,若没有则0 0 0不能正确处理
if(minute.getValue()==0)
hour.increase();
}
}
}
public String toString(){//作用:将整个时间存入一个字符串,通过return返回再输出,若省略,怎样直接输出??
String time=String.format("%02d:%02d:%02d\n", hour.getValue(),minute.getValue(),second.getValue());
return time;
}
}
---------------------3------------------------实现分别接收并判断单个时间(秒,分,时)是否达到限制值(是否重置0)或增加
package clock;
public class Display{
private int value=0;//初始化时间变量
private int limit=0;
public Display(int limit){//接收限制值24,60,60
this.limit=limit;
}
public void setValue(int value)//分别接收初始时间
this.value=value;//初始化value时间变量
}
public void increase(){//实现时间递增
value++;
if(value==limit)//判断是否达到限制值,是否翻转
value=0;
}
public int getValue(){//返回单个时间值
return value;
}
}
Ps:编写的顺序应为3--2--1