所以有一天,我想知道我是否可以在初始化其余程序代码之前制作一个等待几秒钟的简单程序。我当时的第一个想法是使用这样的日历功能;
import java.util.Calendar;
public class NewMain {
static int count = 0 ;
static int time = 0 ;
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
time = cal.get(Calendar.MINUTE);
count = time +1;
System.out.println(time);
System.out.println(count);
while (time < count){
time = cal.get(Calendar.MINUTE);
}
System.out.println("Done");
}
这个想法是当time
的值变得大于count
时,程序的其余部分将被执行。但是,当我尝试使用此代码时,程序会在time
的值大于之后继续运行
count
。
我知道这是一个糟糕的代码,因为它浪费了资源,sleep
或wait
功能就像这样,但我很好奇为什么会这样。
答案 0 :(得分:1)
您的Calendar
对象代表一个固定的时间点。每次时间更改时,其字段都不会更新,因此重复调用cal.get(Calendar.MINUTE)
将始终返回相同的值。因此,time < count
总是 true
。您需要在每次迭代时获得一个新的Calendar
实例才能使其工作:
while (Calendar.getInstance().get(Calendar.MINUTE) < count) { ... }
在表现方面,这不是一个好主意。