记录--java进阶--翁凯--第二周作业


有秒计时的数字时钟(10分)

题目内容:

这一周的编程题是需要你在课程所给的时钟程序的基础上修改而成。但是我们并不直接给你时钟程序的代码,请根据视频自己输入时钟程序的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函数无需考虑输入输出。

时间限制:500ms内存限制:32000kb

三个类(三段)

------------------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

阅读更多
上一篇记录--java进阶week2.1--翁凯
下一篇java进阶week3-3.1
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭