15

Javaでfor-eachループを使用して多次元配列を印刷するには? foreach は通常の配列では機能しますが、多次元配列では機能しません。私のコードは次のとおりです。

class Test
{
   public static void main(String[] args)
   {
      int[][] array1 = {{1, 2, 3, 4}, {5, 6, 7, 8}};
      for(int[] val: array1)
      {
        System.out.print(val);
      }
   } 
}
4

4 に答える 4

12

ループは、アドレスを出力することにより、各サブ配列を出力します。その内側の配列が与えられたら、内側のループを使用します。

for(int[] arr2: array1)
{
    for(int val: arr2)
        System.out.print(val);
}

String配列には、たとえばすべての要素を出力するような表現がありません。それらを明示的に印刷する必要があります。

int oneD[] = new int[5];
oneD[0] = 7;
// ...

System.out.println(oneD);

出力はアドレスです。

[I@148cc8c

ただし、ライブラリこの目的のためのメソッドを提供するdeepToStringため、これも目的に適している場合があります。

System.out.println(Arrays.deepToString(array1));
于 2012-10-06T14:44:21.933 に答える
9

int 配列に含まれるデータをログに出力するだけの場合は、次を使用できます。

Arrays.deepToString

forループを使用しません。

作業コード。

import java.util.*;
public class Main
{
   public static void main(String[] args)
   {
      int[][] array = {{1, 2, 3, 4}, {5, 6, 7, 8}};
        System.out.println(Arrays.deepToString(array));
   } 
}

出力

[[1, 2, 3, 4], [5, 6, 7, 8]]
于 2012-10-06T14:52:40.100 に答える
4

これは、ほとんどの言語で機能する非常に一般的なアプローチです。ネストされたループを使用する必要があります。外側のループは配列の行にアクセスし、内側のループはその行内の要素にアクセスします。次に、それを印刷して、すべての行に対して新しい行を開始します(または、印刷する形式を選択します)。

for (int[] arr : array1) {
  for (int v : arr) {
    System.out.print(" " + v);
  } 
  System.out.println();
}
于 2012-10-06T14:49:24.970 に答える
2

現在の出力は次のようになります。

[I@1e63e3d
...

これは、整数配列の文字列表現を示しています。

Arrays.toString配列の内容を表示するために使用できます。

for (int[] val : array1) {
   System.out.println(Arrays.toString(val));
}
于 2012-10-06T14:44:19.187 に答える