我正在尝试编写一个遍历多行文本的循环,将每一行(每个字符串)拆分为两个元素,结果填充一个二维数组。我目前收到一个 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);
/* ... */
}
最佳答案
你的数组定义有问题:
String[][] arr = new String[numLines.size()][];
数组的第二个维度未初始化。您无法使用当前设置访问索引 1
。在尝试访问之前尝试加载数组的数据。
在定义它之后,你应该用(我假设)来自数据持有者(比如,一个列表,一个阅读器,一个文件,你的名字)的每一“行”(不管它是什么)来填充它,你得到你的 numLines
编号。
编辑
正如 einpoklum 正确发现的那样,数组的实际分配是由 split()
方法完成的。实际上,您访问的是空引用
arr[i][1].split("--", 2); //NPE since arr[i] returns null
但是人口是在同一次迭代中完成的(我正在接受):
arr[i] = lines.get(i).split("--", 2);
关于java - 如何正确使用二维数组存储多个字符串的split()结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15797235/