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)
数组的定义存在问题:
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)