在java中增强了for 2d数组的循环

时间:2013-09-21 10:05:16

标签: java foreach multidimensional-array

int Site[][] = new int[N][N];
   for(int[] i : Site)
       for(int j:i)
           Site[i][j]=1;

此代码显示一些错误。请更正代码。

6 个答案:

答案 0 :(得分:6)

int Site[][] = new int[N][N];
for (int[] i : Site)
  for (int j : i)
    i[j] = 1;

Site的元素是int []类型,因此必须是第一个索引变量的类型,i。这给你一个int []的引用,所以索引到那个访问单个元素。

通过使用更有意义的out循环索引标识符,可以使代码更清晰:

int Site[][] = new int[N][N];
for (int[] siteRow : Site)
  for (int i : siteRow)
    siteRow[i] = 1;

答案 1 :(得分:1)

在使用上一个解决方案的问题中,我们遇到了另一个问题,例如

  

0 1 1

     

0 1 1

     

0 1 1

每次打印元素的值时,这是数组的第一个元素为零。 现在,解决问题的解决方案是使用控制语句,如

for(int[] row: B)   
        { 
            for(int j: row)
            {
                if(j==0)
                    System.out.print("  "+row[j]);  
            else
                    System.out.print("  "+j);

            }
            System.out.println();
        }

这肯定会解决第一个元素为零的问题。

答案 2 :(得分:0)

如果您要使用for(int[] i : Site)for(int j:i),则应将元素称为j = 1,而不是Site[i][j]=1;,因为i的类型为{ {1}}和int[]获取其元素的值。

答案 3 :(得分:0)

您不能使用for-each循环来修改存储在数组中的值。为此使用常规for循环。

答案 4 :(得分:0)

我使用它来打印具有增强的for循环的2D数组的每个元素的位置:

int[][] grid = new int[3][3];
    String divider = "------------------";

    int y = 0;

    for (int[] row : grid)
    {   
        for (int dividers : row)
            System.out.print(divider);

        System.out.println();

        int x = 0;
        for (int columns : row)
        {
            row[columns] = y;
            System.out.print("| (row: " + row[columns] + " col: " + x + ") ");
            x++;
        }   
        y++;
        System.out.println("| ");   
    }

    for (int[] lastDivider : grid)
        System.out.print(divider);

答案 5 :(得分:-1)

int[][] twodim = new int[4][3];

for (int[] row : twodim) {
    for (int j = 0; j < row.length; j++) {
        row[j] = 1;
    }
}

for (int[] row : twodim) {
    for (int j : row) {
        System.out.println(row[j]);
    }
}