我正在尝试从几小时后如何做到这一点,所以我会在这里寻求帮助。 我运行一个IRC机器人并尝试做某事,当用户向机器人发送命令时,它需要查看是否可以从用户那里吐出输入。
示例:!help lag 2 3; 该代码适用于此,但如果用户只发送
示例:!help;
它崩溃了Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
以下是该部分的代码:
String command = str.split("!")[1];
command = command.split("\\s+", 2)[0];
String username_fix = java.net.URLEncoder.encode(username, "UTF-8").replace("_", "%20");
String combined = "";
String fix = str.split(command)[1];
fix = fix.trim();
String arrayString[] = fix.split("\\s+");
for (int j = 0; j < arrayString.length; j++) {
combined += arrayString[j] + "|";
}
错误来自String fix = str.split(command)[1];
这完成了msrd0完成的工作if (str.split(command).length > 1)
。
但是罗夏查的答案是一样的,所以我会将其标记为已解决。非常感谢!
答案 0 :(得分:3)
不要尝试自动获取str.split(command)
数组的第二个元素。先拆分,然后检查,如果有第二个元素。
//no
String fix = str.split(command)[1];
//yes
String[] something = str.split(command);
if(something.length > 1) {
//rest of your logic
}
答案 1 :(得分:0)
String fix = str.split(command)[0];
更改此行代码可使其正常工作。您试图访问数组中的位置(在您的情况下为[1]),该位置超出最大长度([0])。