如何检查array []在java中是否具有空值?

时间:2015-07-21 05:53:36

标签: java arrays

我正在读一个csv文件。其中一个要求是检查某列是否有值。在这种情况下,我想检查array[18]中的值。但是,我正在

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
       }
    }
}

6 个答案:

答案 0 :(得分:2)

看,根据JavaSE7

  

抛出ArrayIndexOutOfBoundsException以指示数组具有   被非法索引访问过。 (在你的情况下)索引是   大于或等于数组的大小。

意味着,索引18对于代码中的数组record不合法。此外,如果数组recordnull,那么您将获得另一个名为NullPointerException的异常。

为了解决您的问题,有许多解决方案,一个可以

//assuming that record is initialized 
if(record.length > 18){
      String readDateRecord = record[18];
      ...
   }

答案 1 :(得分:0)

这里有一种方法

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

答案 2 :(得分:0)

您可以尝试以下代码段 -

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

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

}

答案 3 :(得分: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");
        }
}

答案 4 :(得分:0)

大小在创建后在数组中得到修复。如果索引超出大小,则生成ArrayIndexOutOfBoundException。首先,您需要获取数组的大小,然后从数组中检索值

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

声明一个大小为“n”的数组并访问第n个元素。但是,正如我们已经提到的,大小为“n”的数组的索引位于区间[0,n - 1]中。

答案 5 :(得分:0)

如果其为arrayList,则检查其是否包含null

array.contains(null));