如何连续阅读时间?

时间:2013-12-24 19:49:05

标签: java loops clock

我正在尝试制作一个简单的闹钟作为我的第一个java项目。但是,我无法让我的代码继续阅读时间。我只是在java中使用simpleclock的东西而且我现在只会担心时间和分钟。

我想知道如何更新我的“int hour”和“int minute”。我正在考虑在无限循环中读取变量。

感谢任何帮助,谢谢!

Calendar now= Calendar.getInstance();
int hour = now.get(Calendar.HOUR_OF_DAY);
int minute=now.get(Calendar.MINUTE);

int k=1;
while (k==1) {

    System.out.println(hour);
    System.out.println(minute);


}

4 个答案:

答案 0 :(得分:1)

将调用移到循环内的new.get。

答案 1 :(得分:1)

你应该使用一个线程而不是不断地打印时间。如果您(最有可能)需要,请参阅上面的帖子;然而,为了了解你做错了什么,这里有一个解释。

随着时间的推移,您不会更新小时和分钟变量。

例如,如果您在2:52运行此程序,之前,则输入while循环,小时最初为2,分钟最初为52.然后,一旦您输入循环,小时= 2,分钟= 52,永远不会改变。

换句话说,一旦您输入了while循环的范围,如{}所示,您将不会运行前面的三个语句再次循环。

此外,由于while循环将评估条件,您只需将k==1技巧替换为true,这是一个始终评估为true的条件。两种方式都是等价的,但后者更像优雅

这是一个解决方案:

while (true) {

Calendar now= Calendar.getInstance();
int hour = now.get(Calendar.HOUR_OF_DAY);
int minute=now.get(Calendar.MINUTE);

System.out.println(hour);
System.out.println(minute);

}

答案 2 :(得分:1)

你不应该连续循环来获得时间。相反,使用Thread.sleep(int millis)让代码等待每分钟。这减轻了处理器的负担(您的实现使处理器不断忙于无用的更新)。另外,为了获得时间,您应该在循环内将调用移至now.get(...)。试试这个:

Calendar now= Calendar.getInstance();
int hour = now.get(Calendar.HOUR_OF_DAY);
int minute=now.get(Calendar.MINUTE);
while (true) {
    hour = now.get(Calendar.HOUR_OF_DAY);
    minute=now.get(Calendar.MINUTE);
    System.out.println(hour);
    System.out.println(minute);
    // sleep for 5 secs (so minute updates will be accurate to 5 secs)
    // Thread.sleep is not always precise and inaccuracies
    // could build up if we slept for 1 minute
    try { Thread.sleep(5000); } catch(Exception e){}
    // later on when you build more complex programs,
    // you will make use of the catch block, but for now, ignore it
}

答案 3 :(得分:1)

您需要将now.get方法移动到while循环。

如果您不想继续进行不必要的更新,您可以制作一个计时器,并且每隔几秒钟只更新一次:

import java.util.Timer; // import Timer

// Some Codes Here

Timer timer = new Timer();

timer.scheduleAtFixedRate(new TimerTask() {
    @Override
    public void run() {
        // Whatever you want to do with the time, lets say print
        Calendar now= Calendar.getInstance();
        int hour = now.get(Calendar.HOUR_OF_DAY);
        int minute=now.get(Calendar.MINUTE);
        System.out.println(hour);
        System.out.println(minute);
    }
}, 4*1000, 4*1000);     // time to trigger in milliseconds and time to repeat