2015-07-21 2 views
2

Я читаю файл csv. Одним из требований является проверка наличия определенного столбца или нет. В этом случае я хочу проверить значение в array[18]. Тем не менее, я получаюКак проверить, имеет ли массив [] нулевое значение в java?

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 18 

Есть ли другой способ проверить индекс массива, если он имеет значение или пусто?

Мой код:

while ((sCurrentLine = br.readLine())!= null) { 

    String[] record = sCurrentLine.split(","); 

    if(record.length > 0){ // checking if the current line is not empty on the file 
     if(record[18] != null){ // as per console, I am getting the error in this line 
      String readDateRecord = record[18]; 
      // other processing here 
     } 
    } 
} 
+1

получить длину массива первыми, и вы можете избежать IndexOutfBoundsException.Or еще поймать ArrayOutofBoundsException – Renjith

+1

Исключение говорит, что нет ни одного элемента в это положение в массиве. Покажите нам код, в котором вы добавляете элементы в массив. – Kiki

+0

'record! = Null' –

ответ

0

Вот один подход это

Object array[] = new Object[18]; 
boolean isempty = true; 
for (int i=0; i<arr.length; i++) { 
    if (arr[i] != null) { 
    isempty = false; 
    break; 
    } 
} 
0

Вы можете попробовать следующий фрагмент кода -

int length = record.length; 
if((n>0 && n<length-1) && record[n] != null){ 

    String readDateRecord = record[n]; 
    //other processing here 

} 
0
public static void main (String[] args) { 
    Integer [] record = {1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1}; 
    for(int i = 0; i < record.length; i++) 
     if(record[i] == null) { 
      System.out.println(i+1 + " position is null"); 
     } 
} 
+0

Это просто напечатает '' null null "', что кажется довольно глупым. Лучше добавьте индекс 'i' к этому println – Ian2thedv

+0

Да, вы правы – xrcwrn

0

Размер фиксируется в массиве после создание. Если вы получите индекс за пределами размера п она генерируется ArrayIndexOutOfBoundException .so сначала вам нужно получить размер массива, то retrive значение из массива

int size=record.length; 
for(int i=0;i<size;i++) 
    { 
    if(record[i] != null){ 
    // other processing here 
    } 
} 

Объявляем массив с размером «п» и получить доступ к п-й элемент. Однако, как мы уже упоминали, индексы массива с размером «n» находятся в интервале [0, n - 1].

2

Посмотрите, в соответствии с JavaSE7:

ArrayIndexOutOfBoundsException выброшены, чтобы указать, что массив обращались с некорректным индексом. (В вашем случае) Индекс больше или равен размеру массива.

Средство, индекс 18 не является законным для массива record в вашем коде. Более того, если массив record равен null, вы получите еще одно исключение: NullPointerException.

Чтобы преодолеть проблему, есть много решений, один может быть

//assuming that record is initialized 
if(record.length > 18){ 
     String readDateRecord = record[18]; 
     ... 
    } 
Смежные вопросы