[英]How to end a do while loop after a certain amount of time?
我写了一个简单的脚本给 output 一个 KeyPress 消息; 它以 do-while 循环重复,但从不终止。 我想在 15 秒后终止它,但我尝试过的命令都没有奏效。 目前,它所做的只是以无限的“生日快乐”声誉锁定执行设备,增加内存使用量直到它崩溃。 脚本如下;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
public class robot {
private static boolean yes;
public static void main(String[] args) throws AWTException, InterruptedException {
yes=(true);
// TODO Auto-generated method stub
do {
Robot r = new Robot();
r.keyPress(KeyEvent.VK_H);
r.keyRelease(KeyEvent.VK_H);
r.keyPress(KeyEvent.VK_A);
r.keyRelease(KeyEvent.VK_A);
r.keyPress(KeyEvent.VK_P);
r.keyRelease(KeyEvent.VK_P);
r.keyPress(KeyEvent.VK_P);
r.keyRelease(KeyEvent.VK_P);
r.keyPress(KeyEvent.VK_Y);
r.keyRelease(KeyEvent.VK_Y);
r.keyPress(KeyEvent.VK_SPACE);
r.keyRelease(KeyEvent.VK_SPACE);
r.keyPress(KeyEvent.VK_B);
r.keyRelease(KeyEvent.VK_B);
r.keyPress(KeyEvent.VK_I);
r.keyRelease(KeyEvent.VK_I);
r.keyPress(KeyEvent.VK_R);
r.keyRelease(KeyEvent.VK_R);
r.keyPress(KeyEvent.VK_T);
r.keyRelease(KeyEvent.VK_T);
r.keyPress(KeyEvent.VK_H);
r.keyRelease(KeyEvent.VK_H);
r.keyPress(KeyEvent.VK_D);
r.keyRelease(KeyEvent.VK_D);
r.keyPress(KeyEvent.VK_A);
r.keyRelease(KeyEvent.VK_A);
r.keyPress(KeyEvent.VK_Y);
r.keyRelease(KeyEvent.VK_Y);
} while (yes==true);
new java.util.Timer().schedule(
new java.util.TimerTask() {
@Override
public void run() {
yes=false;
}
},
5000
);
}}
对更好的循环或如何在设定时间后终止的建议表示赞赏。
这是另一种方法,使用 LocalTime
LocalTime now = LocalTime.now();
LocalTime later = now.plusSeconds(5);
int count = 0;
while (now.isBefore(later)){
System.out.println(count++);
Thread.sleep(1000);
now = LocalTime.now();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.