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

标签 java arrays string multidimensional-array split

我正在尝试编写一个遍历多行文本的循环,将每一行(每个字符串)拆分为两个元素,结果填充一个二维数组。我目前收到一个 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/

相关文章:

r - 在 R 中,如何提取左括号之前的所有文本?

java - jirutka/rsql-解析器 : How to define an operator that has no argument?(=空=,=notEmpty=)

python - 如何对包含 NaN 的大型多维数组中的每个像素应用线性回归?

ios - TableViewCells 数组在更新 TableView 后重新排序

c - 将指向数组的指针传递给另一个函数 C

java - Java 的 toLowerCase() 是否保留原始字符串长度?

php - 字符串到数组的转换、array_rand、取消设置以及返回数组到字符串。有捷径吗?

java - 格式化 XmlGregorianCalendar 时区问题

java - 查询阻塞 CORS 的 API

java - VSCode 无法加载项目 Java 库 - 如何修复?