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)
但真的需要休息吗?刚才有点恼火:-)
问候!
错误消息应该在循环外发送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(这就是我要做的).
| 归档时间: |
|
| 查看次数: |
422 次 |
| 最近记录: |