如何检测数组中是否存在索引(String [])

Jay*_*arr 1 java arrays

str.split("!")当字符串中包含感叹号时,我正在使用将字符串拉成两半.通过设置代码的方式,如果没有感叹号,我将获得1个索引数组,如果有的话,将获得2个索引数组.

码:

String file, macroName;

String[] fileAndMacro = string.split("!");
if(fileAndMacro[0] != null)
    file = new File(fileAndMacro[0]);
if(fileAndMacro[1] != null)
    macroName = fileAndMacro[1];
Run Code Online (Sandbox Code Playgroud)

如果我输入一个带有感叹号的字符串,它就可以了.例如,"test!string"将返回fileAndMacro[0] = "test"fileAndMacro[1] = "string".

问题是当我没有感叹号时(你们中的一些人可能会从我的代码中看出来).我只是得到一个ArrayIndexOutOfBoundsException.所以,很明显,空检查不是诀窍.考虑到如果没有为要存储的值分配空间,内存中不能有空值,这是有道理的.

尽管我对此有所了解,但我不确定如何检查第二个索引是否存在.如何实时检查索引是否存在?

mrc*_*ori 10

您需要检查数组的长度,因此:

if(fileAndMacro.length > 1)
   macroName = fileAndMacro[1];
Run Code Online (Sandbox Code Playgroud)

通过访问不存在的索引,您将访问内存中不属于您创建的数组的其他空间(实际上是在split()方法中创建的),这就是您获得异常的原因.