[英]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.