Я анализирую файл .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 разных столбцов, но имя каждого столбца хранится только в строке [0][x]. это разные строки, в которых значение хранится как строка.
Моя проблема заключается в следующем: я хочу получить позицию [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
, это тоже заходит слишком далеко. Почему?