如何正确使用二维数组存储多个字符串split()的结果?

use*_*843 2 java arrays string split multidimensional-array

我试图写一个循环,遍历几行文本,将每一行 - 每个字符串 - 分成两个元素,结果填充一个二维数组.我目前在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); 
    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

Fri*_*itz 5

数组的定义存在问题:

String[][] arr = new String[numLines.size()][];
Run Code Online (Sandbox Code Playgroud)

阵列的第二个维度未初始化.您无法使用1当前设置访问索引.在尝试访问数组之前尝试加载数组的数据.

在定义它之后,你应该用(我假设的)来自数据持有者(比如,列表,读者,文件,你命名)的每个"行"(无论是什么)填充它,你可以从中获取你的numLines号码.

编辑

正如einpoklum正确发现的那样,数组的实际分配是通过非常split()方法完成的.实际上,您正在访问空引用

arr[i][1].split("--", 2); //NPE since arr[i] returns null
Run Code Online (Sandbox Code Playgroud)

但人口是在同一次迭代中完成的(我正在考虑):

arr[i] = lines.get(i).split("--", 2); 
Run Code Online (Sandbox Code Playgroud)