我正在读一个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
}
}
}
答案 0 :(得分:2)
看,根据JavaSE7:
抛出ArrayIndexOutOfBoundsException以指示数组具有 被非法索引访问过。 (在你的情况下)索引是 大于或等于数组的大小。
意味着,索引18
对于代码中的数组record
不合法。此外,如果数组record
为null
,那么您将获得另一个名为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));