在我的IRC机器人中,只要有人输入!highfivetest,机器人会发出两次消息.我的if-else有问题吗?
Arry String;
public String[] moderatoren = {"furby1987","furbybot"}; // Moderatoren
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"); } } }
通常,我只是这样打字;
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; } } }
但真的需要休息吗?刚才有点恼火:-)
问候!
错误消息应该在循环外发送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"); }
例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"); }
示例2是更好的选择.而不是将数组转换为a List
,你也可以一直使用a List
(这就是我要做的).