我正在逐行解析一个 .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
,它也太过分了。为什么?