[英]Java: If-else statement
我做了一个抽搐的IRC机器人。 我设置了一个小“系统”,以便在流在线时打开自己的电源,并在流不再在线时关闭它。
即时通讯使用以下代码:
if (TwitchStatus.isstreamlive && multistartprepare == false && multistartprepare2 == false){
livemode = true;
multistartprepare = true;
startedAt = DateTime.now();
startup();
}else{
if (TwitchStatus.isstreamlive == false && multistartprepare){
livemode = false;
multistartprepare = false;
multistartprepare2 = false;
TTmsg.cancel();
TTmsg.purge();
}
}
isstreamlive是一个布尔值,当流实时运行时为true,或者当流脱机时为false。
isstreamlive通过发出JSON请求每5秒更新一次,并始终保持正确的值。
现在的问题是,startup()方法将为irc聊天中的问候消息激活计时器。 当我启动我的机器人时,计时器以某种方式发生了2到3次执行,所以我猜我的if else语句出了点问题。
布尔值multistartprepare和multistartprepare2在启动时为假,并且机器人在那里一次只能启动一次,直到流结束并且他可以脱机。
上面有什么问题吗? 猜猜代码被执行了很多次。
问候和对不起,英语不好:D
如果在if中也使用livemode
变量,可能会有所帮助
if (TwitchStatus.isstreamlive &&
!multistartprepare &&
!multistartprepare2 &&
!livemode) {
您可以通过设置超时机制来解决此问题,该超时机制可以防止您的漫游器在过去几秒钟内发送过该消息。
long lastSent = 0;
...
if (System.currentTimeMillis() - lastSent > 1000*5) { // 5 seconds elapsed
...
// send message
lastSent = System.currentTimeMillis();
}
您的设置方法可能有问题,或者服务器可能向您发送了多条联机消息,但是根据您到目前为止的信息很难分辨。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.