我正在尝试编写一个遍历多行文本的循环,将每一行 - 每个字符串 - 分成两个元素,结果填充一个二维数组。我目前在java.lang.ArrayIndexOutOfBoundsException: 0
行触发了以下代码时出现split()
错误。我想获取split()
调用的结果,并将其用于我的程序的其余部分。另外,如果我没有在第二个数组框中放入一个整数,我会得到一个编译错误 - 预计会出现一个参数。
String[][] arr = new String[numLines.size()][];
for(int i = 0 ; i < numLines.size(); i++) {
arr[i][1].split("--", 2);
/* ... */
}
答案 0 :(得分:5)
您的阵列定义存在问题:
String[][] arr = new String[numLines.size()][];
阵列的第二维未初始化。您无法使用当前设置访问索引1
。在尝试访问数组之前尝试加载数组的数据。
在定义它之后,你应该用(我假设的)从数据持有者(比如一个列表,一个读者,一个文件,你给它命名)中的每个“行”(不管它是什么)填充你得到你的{ {1}}号来自。
修改强>
当正确发现einpoklum时,数组的实际分配是通过非常numLines
方法完成的。实际上,您正在访问空引用
split()
但人口是在同一次迭代中完成的(我正在考虑):
arr[i][1].split("--", 2); //NPE since arr[i] returns null
答案 1 :(得分:3)
您不需要自己分配内部数组,String.split()
会为您执行此操作。你得到异常的原因是你应用方括号两次,即你希望arr[i]
是一个非空数组(并且大小至少为2),这样你就可以分配给{{1 - 事实并非如此。
问题是,您甚至需要才能使用arr[i][1]
。我想你想要做的是以下几点:
arr[i][whatever]