【发布时间】:2013-08-28 13:35:12
【问题描述】:
我正在逐行解析一个 .CSV 文件,我想获取列的值。 以我的 .CSV 文件为例:
time;columnA;columnB,ColumnC
27-08-2013 14:43:00; this is a text; this too; same here
所以我所做的就是将内容存储在一个二维字符串数组中(感谢 split())。 我的数组如下:
array[0][x] = "time".
array[y][x] = "27-08-2013 14:43:00";
它们是 x 个不同的列,但每列的名称仅存储在 line[0][x] 上。 它们是 y 个不同的行,其中的值存储为 String。
我的问题如下,我想获取数据的 [x] 位置,但是当我尝试访问数组的最后一个 [x] 元素时。 我收到此错误消息
java.lang.ArrayIndexOutOfBoundsException: 17
at IOControl.ReadCsvFile.getPosVar(ReadCsvFile.java:22)
at IOControl.ReadCsvFile.<init>(ReadCsvFile.java:121)
at en.window.Main.main(Main.java:48)
显然我读的很远,但是怎么读呢?
这是我的代码:
//Retrieves the x position of the variable var given as parameter.
private int getPosVar(String[][] index, String var)
{
int x = 0;
boolean cond = false;
while((index[0][x] != null) && (cond != true))
{
if (index[0][x].contains(var) == true)
{
cond = true;
}
x++;
}
System.out.println("x = " +x+ " val = " +index[0][x]);
return(x);
}
我认为这可能是因为我没有检查我的 x 值是否小于完整字符串。 像这样:
x < index[x].length
但实际上我并没有改变任何东西,当我给出一个未知的String var 时,它也太过分了。
为什么?
【问题讨论】:
-
您有 4 列,但尝试访问 17?
-
不,在我的真实测试文件中,我有大量数据,为了理解目的,我确实把它们删掉了。但实际上我有 17 列,我尝试访问第 17 列;)
-
如果你有 17 列,最后一个索引是 16,因为索引从 0 开始。用调试器检查你的代码。
标签: java csv multidimensional-array indexoutofboundsexception string-parsing