Java If-Else语句,得到两倍的输出

Java If-Else语句,得到两倍的输出,java,if-statement,irc,Java,If Statement,Irc,在我的IRC机器人中,只要有人输入!highfivetest机器人发出两次消息。 我的if else有什么问题吗 Arry串 public String[] moderatoren = {"furby1987","furbybot"}; // Moderatoren CMD输出 if (message.equalsIgnoreCase("!highfivetest")){ for(int i2 = 0; i2 < moderatoren.lengt

在我的IRC机器人中,只要有人输入!highfivetest机器人发出两次消息。 我的if else有什么问题吗

Arry串

public String[] moderatoren = {"furby1987","furbybot"}; // Moderatoren
CMD输出

        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"); 
                }
            }
        }
if(message.equalsIgnoreCase(“!highfivetest”)){
对于(inti2=0;i2sendMessage(频道,“Nur eingetragene主持人”Oren haben Zugriff auf diesen Befehl.Sry您的
如果其他
正常,问题可能在
循环或其他地方。

用continue替换中断,这是您正在运行的循环

            if (message.equalsIgnoreCase("!highfivetest")){
            for(int i2 = 0; i2 < moderatoren.length; i2++){  
                if (sender.equals(moderatoren[i2])){
                    sendMessage (channel, "!highfive");
                continue;
                }else{              
                    sendMessage(channel, "Nur eingetragene Moderatoren haben Zugriff auf diesen Befehl. Sry <3"); 
                continue;
                }
            }
        }
if(message.equalsIgnoreCase(“!highfivetest”)){
对于(inti2=0;i2发送消息(通道,“Nur eingetragene版主haben Zugriff auf diesen Befehl.Sry错误消息应发送到
for
循环外部。否则,将为每个未发送
!highfivetest
消息的版主打印错误消息。为了简化代码,您可以将版主数组更改为
列表,然后使用
列表。包含
方法

例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");
}
布尔vonModeratorGesendet=false;
for(int i2=0;i2sendMessage(频道,“Nur eingetragene MEDIATOREN haben Zugriff auf diesen Befehl.Sry什么是
MEDIATOREN.length
?它是一个数组字符串,公共字符串[]MEDIATOREN={“admin1”,“admin2”};//版主是否包含唯一的条目?如果数组包含2个值,那么显然for循环将输出它两次。你现在应该感到非常尴尬。嗯,好的:P那么我如何重写它以通过列表检查发送者名称而不每次输出消息?因为它是输出的每次运行到for循环时,都会对消息进行编译(这就是for循环的工作方式),所以我假设你的主持人n.length是一个包含两个数据的数组?你需要在完成第一个循环后立即跳出循环,这不会解决问题。这是一个if/else语句这些特定的
continue
几乎没有用,因为如果它进入
if
它将不会进入
else
你说得对,我的错。现在我已经读了一些进一步的评论,实际上听起来效果不错,他有一个由两名主持人组成的数组,它只是为他们两人输出消息(?)不,for循环仅用于迭代版主数组,因为该数组包含2个版主,所以它会迭代两次。当版主发送此命令时,他/她只会收到一条消息,因为他/她只在数组中出现一次。问题是,当普通用户发送此命令时,循环会在版主数组上迭代两次,然后重试nce在版主中找不到普通用户,每次版主检查时,它都会输出普通用户消息,因此会输出两次。
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");
}
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");
}