2012-02-26 87 views
2

如何检查这两个数组阵列是否为空?如何检查二维数组是否为空

这是我的代码:

 String[][] user = new String[5][3]; 

     System.out.print(user.length); 

      if (user.length == 5){ 
       System.out.print("\n empty"); 
      } 

     for (int j=0; j<3; j++) { 
      System.out.print(" " + user[0][j]+ "\n"); 
     } 

,输出是:

5 
empty null null null 

有谁有关于我的情况的IDE?

+3

部分代码不见了不是吗?如何从最多一个'System.out.println'获得如此多的输出? – 2012-02-26 12:13:15

+1

定义“空”。你的意思是'null'还是''“''? – 2012-02-26 12:15:19

+0

我想你不会发送完整的代码。 – MJM 2012-02-26 12:17:26

回答

2

你在误解我认为Java的某些东西。当你写:

String[][] user = new String[5][3]; 

user.length will always be 5 and 

user[0].length = user[1].length = ... = user[5].length = 3 

如果您要检查,如果你的阵列中的所有值都emty你可以这样做:

boolean notNull = false; 
for(String[] array : user){ 
    for(String val : array){ 
     if(val!=null){ 
     notNull=true; 
     break; 
     } 
    } 
} 
if(notNull){ 
    System.out.println("Array not empty)"; 
}else{ 
    System.out.println("Array empty"); 
} 

另一种解决方案是使用Arrays.deepEquals

String[][] user = new String[5][3]; 
String[][] emptyReferenceForComparison= new String[5][3]; 
Arrays.deepEquals(user, emptyReferenceForComparison); // return true 
1

我建议使用Apache Commons Lang3。在这个库中存在用于处理数组的实用程序。 班级名称为ArrayUtils。对于样本:

String[][] user = new String[5][3]; 
    for(String[] nestedArray : user) 
     if(ArrayUtils.isEmpty(nestedArray)) 
      System.out.println("Is empty"); 

Apache Commans Lang3是很好的实用程序。 有关更多信息,请参阅here