检查数组时是否存在java ArrayIndexOutOfBoundsException?
我一直在制作一个即时聊天程序,想让用户可以互相“耳语”或私人信息。我的实现方式是用户输入:
/w [username] [message]
然后我将其发送到服务器,服务器将其发送给所有用户。然后,用户必须检查它是否已发送给他们,这就是该方法:
if (message.startsWith("/msg/")) {
message = message.trim();
message = message.substring(5);
String[] words = message.split("//s");
String UserName = null;
try {
String username = words[2];
UserName = username;
System.out.println(UserName);
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Error reading the whisper command!");
}
if (UserName == client.getName()) {
List<String> list = new ArrayList<String>(Arrays.asList(words));
list.removeAll(Arrays.asList(2));
words = list.toArray(words);
String text = words.toString();
text = "You've been whispered! " + message;
console(text);
}
每次我在测试时发送a/w时,它总是给出ArrayIndexOutOfBoundsException。我还修改了发送中的消息。以下是该方法:
else if (message.toLowerCase().startsWith("/w")) {
message = "/msg/" + client.getName() + message;
message = "/m/" + message + "/e/";
txtMessage.setText("");
}
我还为用户的实际代码添加了更多选项,我制作了/whisper、/m、/msg和/message,但这些都只是使用不同输入的副本。为什么它会给我一个ArrayIndexToftoBoundsException,而单词数组中的第三位应该是发件人试图发送它的用户名。显然,这可能不是发送私人消息的最佳方式,如果你们中的任何人有一个更简单的方法,我可以实现我的服务器,请继续,让我知道!只要知道我是一个年轻的新程序员,所以我可能会有很多问题
# 1 楼答案
你的
split()
正则表达式中的斜杠是向后的。你需要你也可以只使用一个空间