有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

检查数组时是否存在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) 个答案

  1. # 1 楼答案

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

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

    你也可以只使用一个空间

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