所以我想知道无论如何我都可以实现这个代码,以便它在每次循环迭代时暂停。目前,当我运行代码时,程序将停止n秒(n是循环迭代的数量),然后立即显示所有内容。但是,我希望它显示一个项目,等待一秒钟并显示下一个项目。我希望这很清楚。
while(x > 0 || y > 0){
Try{
Thread.sleep(1000);
} catch (InterruptedException ie) {
ie.printStackTrace();
}
// Print x and y
//Change x and y vals
}
}
答案 0 :(得分:0)
建议:在一个方法中将线程休眠分开来完成工作而不重写所有这些代码。
建议2:搜索线程睡眠是否是最适合您的解决方案
试试这个:
public void waitSeconds(int seconds){
try{
Thread.sleep(seconds*1000l);
} catch(Exception e) {
e.printStackTrace(); //ugly but enough to explain
};
}
public void yourMethod(){
while(x > 0 || y > 0){
waitSeconds(1);
print x
waitSeconds(1);
print y
//Change x and y vals
}
}
答案 1 :(得分:0)
首先,don't suppress InterruptedException
。如果没有什么可以做的,根本就不要抓住它,或者把它转换为RuntimeException
,例如。
throw new RuntimeException(ie);
其次,听起来您正在描述flushing问题,可以通过添加以下内容来解决:
System.out.flush();
打印您的值后。但是,如链接问题中所述,只要打印新行,System.out
和System.err
就会自动刷新;你打印到stdout,还是不打印新行?
您需要在需要暂停的程序中进行Thread.sleep()
来电,因此如果您需要在打印x
和y
之间暂停,请在它们之间添加另一个Thread.sleep()
答案 2 :(得分:-1)
真的很奇怪。试试这个:
while(x > 0 || y > 0) {
// Print old values
// Change your x and y
// Print new values
try {
TimeUnit.SECONDS.sleep(y);
} catch(InterruptedException ex) {}
}