我一直在制作即时聊天程序,并希望用户可以互相“窃窃私语”或私信。我实现的方式是用户输入:
/ w [用户名] [消息]
然后我将它发送到服务器,然后将其发送给所有用户。然后用户必须检查它是否发送给他们,这是方法:
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);
}
每当我在测试时发送一个/ w,它总是给出ArrayIndexOutOfBoundsException。我还修改了发送中的消息。继承人那个方法:
else if (message.toLowerCase().startsWith("/w")) {
message = "/msg/" + client.getName() + message;
message = "/m/" + message + "/e/";
txtMessage.setText("");
}
我还为用户的实际代码添加了更多选项,我制作了/ whisper,/ m,/ msg和/ message,但这些只是具有不同输入的副本。为什么它给我一个ArrayIndextOutOfBoundsException,当words数组中的第三个位置应该是发送者试图发送给它的用户名时。显然,这可能不是发送私人消息的最佳方式,如果你们中的任何一个人有更简单的方法可以实现我的服务器,请继续告诉我!只知道我是一个年轻的新程序员,所以我可能会有很多问题。
答案 0 :(得分:0)
split()
正则表达式中的斜杠是向后的。你需要
String[] words = message.split("\\s");
您也可以使用空格
String[] words = message.split(" ");