当前位置: 首页 > 知识库问答 >
问题:

检查数组时的ArrayIndexOutOfBoundsException?

郗福
2023-03-14

我一直在做一个即时聊天程序,并希望使用户可以“耳语”或私人消息彼此。我实现的方式是用户输入:

/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);
    }

每次在测试时发送a/W时,它总是给出ArrayIndexOutOfBoundsException。我也在发送中修改消息。方法如下:

else if (message.toLowerCase().startsWith("/w")) {
    message = "/msg/" + client.getName() + message;
    message = "/m/" + message + "/e/";
    txtMessage.setText("");
}

我还为用户的实际代码添加了一大堆更多的选项,我创建了/whisper、/m、/msg和/message,但这些都是带有不同输入的副本。为什么它给我一个ArrayIndexToufBoundsException,而words数组中的第3个位置应该是发送者试图将其发送到的用户名。显然,这可能不是发送私人消息的最佳方式,如果你们中的任何人有一个更简单的方式,我可以实现到我的服务器,请继续,让我知道!只要知道我是一个年轻的,新的程序员,所以我可能会有很多问题。

共有1个答案

丘飞
2023-03-14

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

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

您也可以只使用一个空格

String[] words = message.split(" ");
 类似资料:
  • @PeterLawrey我稍微调整了代码如下,因为我只需要洗牌,这是一个享受,我会弹出卡片的堆栈来处理 感谢彼得和所有其他贡献者。M.

  • 问题内容: 我需要检查数组以查看用户输入是否已经存在,并显示一条有关是否存在的消息。第一部分工作正常,但是我尝试创建一种用于单词检查的方法,我不确定自己是否走对了,干杯。 问题答案: 对。您显然已经经历了一个糟糕的思考过程,所以让我们清理一下状况,重新思考一下。 第一步:您需要一些用户输入 第二步:将其与所有先前的用户输入进行比较,以查看是否存在。 如果存在,则返回一条消息,指示已输入值。 否则忽

  • 在PHP中,检查数组是否为递归数组的最佳方法是什么? 给定以下代码: 从PHP手册: print\u r()在到达数组的第三个元素时将显示递归。 似乎没有其他方法可以扫描数组中的递归引用,因此如果需要检查它们,则必须使用print\u r()及其第二个参数来捕获输出并查找单词RECURSION。 还有更优雅的检查方式吗? 附:这就是我如何使用regex和print\u r()检查和获取递归数组键的

  • 我想做的每件事都成功了,现在是最后一部分,我需要检查某个id的学生是否有某种疫苗,结果应该是真的或假的。我知道我必须使用ListofFos。contains():'但我不知道如何使用它,也不知道在哪里使用它。

  • 问题内容: AngularJs中的内联方法是否可以检查某物是否为数组? 我本以为这样可以工作: 我已经证实它实际上是一个数组。有什么我想念的东西吗? 问题答案: 您可以戴上瞄准镜… 小提琴

  • 问题内容: 我有一个数组,其中填充了6个随机生成的数字。首先,它生成一个介于1和49之间的随机数,然后将其与数组中的数字进行比较。如果发现重复,则应再次生成一个随机数,然后再次执行检查。如果没有重复项,则将数字添加到数组中。 这是代码: 但是,由于某种原因,它仍然允许重复,尽管很少(大约50个数组中的1个),例如。但是,当我尝试通过取出随机数元素并使用30这样的数字来重复此操作时,我无法重现结果。