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()方法中创建的),这就是您获得异常的原因.