java - Can't access last element of array -
i parsing .csv file, line after line , want values of columns. example .csv file :
time;columna;columnb,columnc 27-08-2013 14:43:00; text; too; same here
so did store content in bidimensional string array (thanks split()). array made follow :
array[0][x] = "time". array[y][x] = "27-08-2013 14:43:00";
they x different columns, name of every column stored on line[0][x]. y different lines, value stored string in it.
my problem following, want [x] position of data, when try access last [x] element of array. receive error-message
java.lang.arrayindexoutofboundsexception: 17 @ iocontrol.readcsvfile.getposvar(readcsvfile.java:22) @ iocontrol.readcsvfile.<init>(readcsvfile.java:121) @ en.window.main.main(main.java:48)
obviously i'm reading far, how?
here code :
//retrieves x position of variable var given 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); }
i thought may because didn't checked x value smaller full string. :
x < index[x].length
but in fact didn't changed anything, , when give unknown string var
goes far. why?
checking validity of index before using idea:
if ( index == null || index.length == 0 ) return -1;
your while loop should more this:
while ( x < index[0].length ) { if ( index[0][x] == null ) { x++; continue; // skip possible null entries. } if ( index[0][x].contains(var) ) { system.out.println("x = " + x + ", val = " + index[0][x]); return x; // return position found. } x++; } return -1;
using loop (which prefer):
for ( int x = 0; x < index[0].length; x++ ) { if ( index[0][x] == null ) continue; // skip possible null entries. if ( index[0][x].contains(var) ) { system.out.println("x = " + x + ", val = " + index[0][x]); return x; // return position found. } }
Comments
Post a Comment