如果Else Statement,则输出两倍

use*_*962 0 java irc if-statement

在我的IRC机器人中,只要有人输入!highfivetest,机器人会发出两次消息.我的if-else有问题吗?

Arry String;

public String[] moderatoren = {"furby1987","furbybot"}; // Moderatoren
Run Code Online (Sandbox Code Playgroud)

CmdOutput;

        if (message.equalsIgnoreCase("!highfivetest")){
            for(int i2 = 0; i2 < moderatoren.length; i2++){  
                if (sender.equals(moderatoren[i2])){
                    sendMessage (channel, "!highfive");
                }else{              
                    sendMessage(channel, "Nur eingetragene Moderatoren haben Zugriff auf diesen Befehl. Sry <3"); 
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

通常,我只是这样打字;

            if (message.equalsIgnoreCase("!highfivetest")){
                for(int i2 = 0; i2 < moderatoren.length; i2++){  
                    if (sender.equals(moderatoren[i2])){
                        sendMessage (channel, "!highfive");
                    break;
                    }else{              
                        sendMessage(channel, "Nur eingetragene Moderatoren haben Zugriff auf diesen Befehl. Sry <3"); 
                    break;
                    }
                }
            }
Run Code Online (Sandbox Code Playgroud)

但真的需要休息吗?刚才有点恼火:-)

问候!

Rob*_*ahl 6

错误消息应该在循环发送for.否则,将为每个未发送!highfivetest消息的主持人打印.要简化代码,您可以将主持人数组更改为a List,然后使用该List.contains方法.

例1:

boolean vonModeratorGesendet = false;
for (int i2 = 0; i2 < moderatoren.length; i2++) {
    if (sender.equals(moderatoren[i2])) {
        vonModeratorGesendet = true;
        // you could also send "!highfive" from here
        break;
    }
}
if (vonModeratorGesendet) {
    sendMessage (channel, "!highfive");
} else {
    sendMessage(channel, "Nur eingetragene Moderatoren haben Zugriff auf diesen Befehl. Sry <3");
}
Run Code Online (Sandbox Code Playgroud)

例2:

List<String> moderatorenListe = Arrays.asList(moderatoren);
if (moderatorenListe.contains(sender)) {
    sendMessage (channel, "!highfive");
} else {
    sendMessage(channel, "Nur eingetragene Moderatoren haben Zugriff auf diesen Befehl. Sry <3");
}
Run Code Online (Sandbox Code Playgroud)

示例2是更好的选择.而不是将数组转换为a List,你也可以一直使用a List(这就是我要做的).