倒数计时器,秒数超过60秒

时间:2017-07-12 02:22:47

标签: java thread-sleep

所以我尝试制作一个简单的代码作为倒数计时器。用户将在终端中输入2位数,相应的分钟和秒值。这是代码:

public class CountdownMins
{
    public static void main(String args[]) throws InterruptedException
    {

        int min = Integer.parseInt(args[0]);
        int sec = Integer.parseInt(args[1]);

        for(int i=min;i>=0;i--)
        {
            for(int j=sec;j>=0;j--)
            {
                Thread.sleep(1000);
                System.out.println(i +" minutes" + " " + j + " seconds");
            }

                sec=60;


        }
    }

}

我想知道如果用户在第二个输入上输入大于60的数字,我该怎么办?就像他们放120会改为2分钟或者当他们输入90时它将它转换为1分30秒并相应地添加它们插入分钟值

2 个答案:

答案 0 :(得分:1)

您可以使用TimeUnit执行大部分繁重工作,将所有内容转换为毫秒并执行计算。像,

long start = System.currentTimeMillis();
long total = TimeUnit.MINUTES.toMillis(min) + TimeUnit.SECONDS.toMillis(sec);
long remain;
while ((remain = start + total - System.currentTimeMillis()) > 0) {
    try {
        long reMin = TimeUnit.MILLISECONDS.toMinutes(remain);
        long reSec = TimeUnit.MILLISECONDS
                .toSeconds(remain - TimeUnit.MINUTES.toMillis(reMin));
        System.out.printf("%d minutes, %d seconds%n", reMin, reSec);
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}

答案 1 :(得分:0)

你可以将秒除以60并将被除数加到分钟,然后将其余部分加为秒。

min += sec / 60;
sec = sec % 60;

如果你想安全地使用底片也添加:

if(sec < 0){sec += 60;}