1

これによりエラーが発生します。多次元配列から要素を1つずつ抽出する他の方法はありますか?

foreach ループ (対応する値を保持する変数: array/Iterable) の場合、最初に multiD から 1 次元配列を取得できると考えました。配列を作成し、その配列から要素を抽出する別の foreach ループを作成します。しかし、foreach ループであらゆる種類のエラーが発生します。

最初のエラー: Array2D.java:14: エラー: ステートメントではありません (a : arr[] )

コードビハインド:

class Array2D {
    public static void main(String[] args) {
        int[][] array = new int[][]
        {
                { 1, 2, 3 },
                { 4, 5, 6 },
                { 7, 8, 9 }
        };

        int a[] = new int[3];

        for(a : array) {
            for(int n : a) {
                System.out.print(n + " ");
            }
        }
    }
}
4

4 に答える 4

2

C# は次の配列をサポートしています。

  1. 一次元配列
  2. 多次元配列 (矩形配列とも呼ばれます)
  3. 配列の配列 (ジャグ配列とも呼ばれます)。

例:

int[] numbers; // Single-dimensional arrays // 1

string[,] names; // Multidimensional arrays // 2

int[][] detail;  // jagged arrays // 3

C# では配列はオブジェクトであり、インスタンス化する必要があることに注意してください。

したがって、上記のサンプルのインスタンス化は次のようになります。

int[] numbers = new int[5];  // 1

string[,] names = new string[5,4]; // 2

int[][] detail = new int[7][];    // 3
for (int d = 0; d < detail.Length; d++)
{
  detail[d] = new int[10];
}

サンプルに関しては、次のように書き直される可能性があります。

static void Main(string[] args)
{
    int[][] arr = new int [][]
    {
        new int[] {1,2,3},
        new int[] {4,5,6},
        new int[] {7,8,9}
    };

    for (int i = 0; i < arr.Length; i++)
    {
        for (int j = 0; j < arr[i].Length; j++)
        {
            System.Console.Write(arr[i][j] + " ");
        }
        System.Console.WriteLine();
    }
}

Javaでは、次のようになると思います

for(int[] arr : array)
{
    for(int n : arr)
    {
        System.out.print(n + " ");
    }
}
于 2012-11-01T14:44:33.573 に答える
2

for最初のステートメントを変更する必要があります。また、int[] a宣言 を移動する必要があります。

for(int[] a : arr) {
    ...
}
于 2012-11-01T10:08:12.837 に答える
1

私は試してみます:

for (int r = 0; r < arr.length; r++) {
   for (int c = 0; c < arr[r].length; c++) {
      // c and r are the indexes into the array
   }
}

各配列/配列行の長さを反復することにより、配列要素のインデックスが得られます。

または、インデックスのない要素だけが必要な場合

   for (int[] a : arr) {
      for (int b : a) {
         // gives you the element in b
      }
   }
于 2012-11-01T10:09:12.437 に答える
-1

最初に置く:

for(a : arr) {
//
}
于 2012-11-01T10:08:22.790 に答える