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

为什么会这样。拆分导致数组越界错误?[重复]

微生自怡
2023-03-14
public class test {
    public static void main(String[] args) {        
        String[] arr = {"0 1.2.3.4","a b.c.d.e"};
        System.out.println(arr[0].split(".")[2]);
    }
}

我正在使用Java8。

预期输出为3。

共有1个答案

年风华
2023-03-14

拆分的参数是一个正则表达式,而不是字面上的'这是您应该扫描的字符串'。正则表达式中的.符号意味着'任何东西',所以它就像"。拆分(" ") -您传递的字符串都是分隔符,因此,您没有输出。

。拆分(Pattern.quote ("."))会处理它。

编辑:更详细地说——假设字符串由所有分隔符组成,split最初为您提供一个填充了空字符串的数组;“中间”任何字符的每个位置都有一个字符(因为每个字符都是分隔符)。但是,默认情况下,split将从末尾去除所有空字符串,因此最终得到一个0长度的字符串数组。

 类似资料:
  • 我不明白为什么这个方法不起作用。它会编译,但会引发运行时错误。

  • 我使用String[3]数组来存储来自4个JTextFields的用户输入,然后将该数组输出到一个txt文件: 有人能告诉我为什么我会得到异常“数组索引越界”吗?谢谢。

  • 我已经花了一个多小时试图解决这个问题,但我什么都没做。 当我试图使用Maven编译我的项目时,我得到了以下错误: [错误]无法执行目标组织。阿帕奇。专家插件:maven assembly插件:2.2-beta-5:single(默认cli)在GankALane项目上:无法解析mojo org的配置。阿帕奇。专家插件:maven assembly插件:2.2-beta-5:单参数存档:在组织中找不到

  • 线上出现这种问题的,过了一会就好了

  • 所以浮点运算是不精确的,但这并不能完全解释这里发生的事情:

  • 问题内容: 遇到一个错误地使用 而不是 在其代码中的人,它没有显示为编译错误。 是因为 是相同的 ? 问题答案: 没有编译错误,因为它是有效的(尽管相当无用) 一元运算符 ,其使用方式与以下方式相同: Java语言规范中的相关部分是Unary Plus运算符+(第15.15.3节) 。它指定调用一元运算会导致操作数的一元数值提升(第5.6.1节)。这意味着: * 如果操作数是编译时类型的,,,或,