集训第二次作业

集训第二次作业

我们要做一个时钟类,这类的对象有一个start方法,它能实现这样的功能

输出:
00:00
00:01
00:02
00:03
00:04
00:05
00:06
. …
00:59
01:00
输出格式可以用System.out.printf("%02d:%02d",hour,min);

思路

1.既然有小时和分钟部分,那就定义hour和minute
2.可以看到当分钟累加到60后,小时部分加1
3.定义minuteLimit,当minute累加到minuteLimit后,hour加1
4.在此题中限制了hour的范围,所以对hour的范围不用定义limit,当然也可以定义hourLimit=24.又或者通过Scanner类来获取hourLimit。
5.构建start方法,在start内进行对minute的累加和hour判断加1的操作

代码实现

package basic;

public class clock {
    private int hour=0;
    private int minute=0;
    final int hourLimit=24;
    final int minLimit=60;

    public void start() throws InterruptedException {
        System.out.printf("%02d:%02d\n",hour,minute);
        while(hour<=0)
        {
            Thread.sleep(1000);
            minute++;
            if(minute==minLimit)
            {
                hour++;
                minute=0;
            }
            System.out.printf("%02d:%02d\n",hour,minute);
        }
    }
    public static void main(String[] args) throws InterruptedException {
        clock cl=new clock();
        cl.start();
    }
}

Thread.sleep()

Thread.sleep(1000)在上述程序的作用是让start中的输出拥有一秒间隔
Thread.sleep()是Thread类中的一种静态方法,使当前正在执行的线程休眠(暂时停止执行)指定的毫秒数,取决于系统计时器和调度程序的精度和准确性。 该线程不会失去任何监视器的所有权。Thread.sleep()的具体实现有两种形式:
1.Thread.sleep(long mills); 线程睡眠mills毫秒
2.Thread.sleep(long mills,int nanos); 线程睡眠mills毫秒+nanos纳秒
在哪个线程中调用Thread.sleep()就暂停哪个程序

说人话:像上述的程序没有加Thread.sleep的时候是一波输出,一秒真男人,加上了Thread.sleep()之后就给他套上了限制,告诉他这波干完之后必须停几秒,再干下一个。

public void countdown(int num) throws InterruptedException {
        while(num!=0)
        {
            num--;
            System.out.println(num);
            Thread.sleep(500);
        }
    }

当运行上述程序的时候,就会看到一个一个输出倒计时,可以更改sleep内数字来改变间隔时间

上一篇:tx 账户中心客户库es搜索排序坑---preference参数


下一篇:算法笔记01:格式控制符