当字符串中包含感叹号时,我正在使用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
。所以,很明显,空检查不是诀窍。考虑到如果没有为要存储的值分配空间,内存中不能有空值,这是有道理的。
尽管我对此有所了解,但我不确定如何检查是否存在第二个索引。如何实时检查索引是否存在?
答案 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
}