对于foreach循环中的每个循环?

时间:2012-11-01 10:07:19

标签: java arrays foreach

这会给出错误。从一个多维数组中逐个提取元素的任何其他方法?

我认为对于foreach循环(变量持有相应的值:array / Iterable),可以首先从multiD获取一维数组。然后创建另一个foreach循环,从该数组中提取元素。但它在foreach循环中给出了各种错误。

第一个错误:Array2D.java:14:错误:不是声明 for(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 个答案:

答案 0 :(得分:2)

您需要更改第一个for语句。此外,您必须移动int[] a声明:

for(int[] a : arr) {
    ...
}

答案 1 :(得分:2)

C#支持以下数组:

  1. 一维数组
  2. 多维数组(也称为矩形数组)
  3. 数组数组(也称为锯齿状数组)。
  4. 示例:

    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 + " ");
        }
    }
    

答案 2 :(得分: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
      }
   }

答案 3 :(得分:-1)

在第一个放置:

for(a : arr) {
//
}