检查数组时是否为ArrayIndexOutOfBoundsException?

时间:2016-03-17 22:54:50

标签: java

我一直在制作即时聊天程序,并希望用户可以互相“窃窃私语”或私信。我实现的方式是用户输入:

  

/ 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数组中的第三个位置应该是发送者试图发送给它的用户名时。显然,这可能不是发送私人消息的最佳方式,如果你们中的任何一个人有更简单的方法可以实现我的服务器,请继续告诉我!只知道我是一个年轻的新程序员,所以我可能会有很多问题。

1 个答案:

答案 0 :(得分:0)

split()正则表达式中的斜杠是向后的。你需要

String[] words = message.split("\\s");

您也可以使用空格

String[] words = message.split(" ");