if语句上的计时器?
Timer on if statement?
我正在做一个检测物体的 Finch 机器人项目,在其中一种方法中,我必须做一个 if 语句,如果 Finch 在 5 秒内检测到一个物体,我是否需要一个计时器 class为此?请帮忙。 (Java 的新手)
如果 Finch 检测到一个物体 <= 5 秒,停止并将 LED 变为蓝色,否则等待 1 秒并继续朝随机方向移动(我已经这样做了)
编辑:到目前为止我的代码:
public static void ObjectEncountered() {
while(true) {
if(myfinch.isObstacle()== true){
myfinch.setLED(0, 0, 255);
myfinch.setWheelVelocities(0, 0);
}
else {
myfinch.setLED(0, 0, 0);
random();
}
}
}
我们需要更多代码来回答。如果您检测对象的方法总是立即 returns,那么很容易保持循环,直到 System.currentTimeMillis() 显示的数字比开始时大 5000 以上。但是,如果您检测对象的方法直到检测到某物(可能是 20 秒后)才 return,那么您将需要一些异步编程才能在 5 秒时将 LED 变为蓝色。
该方法将涉及分离另一个线程来调用检测方法,然后等待它检测到某些东西或 5 秒过去。您可以使用 BlockingQueue 进行从一个线程到另一个线程的通信,因为这也提供了定时等待。如果您不关心 5 秒后检测到的对象,您可以让主线程中断检测线程,这将让它正常关闭。
我正在做一个检测物体的 Finch 机器人项目,在其中一种方法中,我必须做一个 if 语句,如果 Finch 在 5 秒内检测到一个物体,我是否需要一个计时器 class为此?请帮忙。 (Java 的新手)
如果 Finch 检测到一个物体 <= 5 秒,停止并将 LED 变为蓝色,否则等待 1 秒并继续朝随机方向移动(我已经这样做了)
编辑:到目前为止我的代码:
public static void ObjectEncountered() {
while(true) {
if(myfinch.isObstacle()== true){
myfinch.setLED(0, 0, 255);
myfinch.setWheelVelocities(0, 0);
}
else {
myfinch.setLED(0, 0, 0);
random();
}
}
}
我们需要更多代码来回答。如果您检测对象的方法总是立即 returns,那么很容易保持循环,直到 System.currentTimeMillis() 显示的数字比开始时大 5000 以上。但是,如果您检测对象的方法直到检测到某物(可能是 20 秒后)才 return,那么您将需要一些异步编程才能在 5 秒时将 LED 变为蓝色。
该方法将涉及分离另一个线程来调用检测方法,然后等待它检测到某些东西或 5 秒过去。您可以使用 BlockingQueue 进行从一个线程到另一个线程的通信,因为这也提供了定时等待。如果您不关心 5 秒后检测到的对象,您可以让主线程中断检测线程,这将让它正常关闭。