簡體   English   中英

Java:If-else語句

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM