2012-02-26 8 views
2

この2次元配列が空であるかどうかをどうやって確認できますか?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

いくつかコードが欠けていますか?どのように多くの出力を最大で1つの 'System.out.println'から得るのですか? –

+1

"空"を定義します。 'ヌル'か '' ''を意味しますか? –

+0

あなたのコードを完全に送信しないと思います。 – MJM

答えて

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を参照してください。

関連する問題