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

时间:2013-06-13 18:29:33

标签: 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];

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

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

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

3 个答案:

答案 0 :(得分:10)

您需要检查数组的长度,所以:

if(fileAndMacro.length > 1)
   macroName = fileAndMacro[1];

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

答案 1 :(得分:0)

只需测试fileAndMacro.length。如果它是2或更大,则至少有一个感叹号。

答案 2 :(得分:0)

您可以使用长度属性array.length

检查数组的长度
if (array.length  < 2){
    //perform some operation you want

}