在2D阵列上使用foreach循环时会发生什么

时间:2017-07-22 10:21:57

标签: java arrays foreach 2d

int[][] winningPositions = 
{{0,1,2}, {3,4,5}, {6,7,8}, {0,3,6}, {1,4,7}, {2,5,8}, {0,4,8}, {2,4,6}};

    for (int[] winningPosition : winningPositions)
    System.out.println(winningPosition[2]);

这个打印 2 五 8 6 7 8 8 6

我不明白为什么,这是如此随机,foreach循环试图做什么?为什么不打印第三组数组{6,7,8}? 这是怎么回事?

4 个答案:

答案 0 :(得分:1)

你的每个循环实际上是在2D数组winsPositions中打印每个winnerPosition数组的第三个元素:

{{0,1,2}, {3,4,5}, {6,7,8}, {0,3,6}, {1,4,7}, {2,5,8}, {0,4,8}, {2,4,6}}

此语句winningPosition[2]将获取2D数组winningPositions中内部数组的每个第三个元素。

你也可以分解每个循环来理解它:

在每个循环的第一次迭代中,它将获得winsPositions的第一个元素:

{0,1,2}

然后此语句winningPosition[2]将获得此子数组中的第三个元素2

在每个循环的第二次迭代中,它将获得winsPositions的第二个元素:

{3,4,5}

之后winningPosition[2]将获得此子数组中的第三个元素5,依此类推。

这就像在传统的for循环中获取winningPositions[1][2]一样。

<强>更新

  

为什么不打印第三组数组{6,7,8}?

我从你的问题中了解到你想要打印2D数组winsPositions的第三个子数组。

要打印它,每个循环都不需要任何

您只需使用方法Arrays.toString进行打印即可:

System.out.println(Arrays.toString(winningPositions[2]));

输出:

[6, 7, 8]

答案 1 :(得分:0)

int[][] winningPositions = 
            {{0,1,2}, {3,4,5}, {6,7,8}, {0,3,6}, {1,4,7}, {2,5,8}, {0,4,8}, 
{2,4,6}};

                for (int[] winningPosition : winningPositions){
                    for(int i = 0; i < winningPosition.length; i ++){
                        System.out.println(winningPosition[i]);
                   }
               }

图像有抽屉,每个抽屉里有1个音符。音符在顶部,中间y和底部z上有x。使用您的循环打开每个抽屉并查看每个音符的第三行。仅打印z。

每次打开抽屉时,都需要查看所有线条。这样你就可以为笔记的每一行打印内容。 winningPosition.length是该笔记上有多少行。

查找嵌套循环。

答案 2 :(得分:0)

你的for循环是通过每个数组进行的,并在它完成它的内存中的整数后打印出来。因为你输入了:

for (int[] winningPosition : winningPositions)

你要求从winsPositions中获取int []。因此,在将3个整数放入这样的数组之后,它在其刚刚配置的数组的内存中有最后一个整数。这就是为什么它只打印出数组的最后一个整数。 如果你想打印出所有原始的winsPositions,请执行:

for (int winningPosition : winningPosition)

如果您想在原始的winsPosition中打印出每个数组的特定数量,请执行以下操作:

for (int[] winningPosition : winningPosition)
    System.out.println(winningPosition[x];

X是您要打印出的整数的索引点。 (数组的第一个索引号始终为0.) 你也可以使用我说的最后一种方法来继续你原本想做的选择。 (例如,使用另一个for循环来遍历您在前一个for循环中创建的int [] winnerPosition。)

希望这能帮到你!

答案 3 :(得分:0)

Iam提供了类似我正在构建的类似内容....这是使用[]打印所有数字和单独的数组,使用新行和数字,使用代码播放一下,您将能够打印出您喜欢的内容...

public class ArrayFinal {

public static void main(String[] args) {

    System.out.println("Array\t Nummbers");
    int Array[][] = { { 2, 43, 23, 43, 23, 43 }, { 3, 5, 6, 7, 6, 5 }, { 34, 42, 44, 24, 6, 7 },
            { 2, 34, 54, 332, 23, 43 }, { 2, 43, 45, 54, 34, 34 }, { 2, 34, 54, 54, 34, 23 } };

    display(Array);

}


// methodos gia na dimiourgisoume to rows kai ta columns
public static void display(int x[][]) {


    for (int row = 0; row < x.length; row++) {

        StringBuilder str_buf = new StringBuilder();
        str_buf.append((row + 1) + ".");
        for (int column = 0; column < x[row].length; column++) {

            str_buf.append("\t" + "[" + x[row][column] + "]");// tiponi ta noumera pou vriskonte mesa stin klirosi


        }
        System.out.println(str_buf.toString());// tiponi to noumero tis klirosis

    }
}

}

结果:

1.  [2] [43] [23] [43] [23] [43]
2.  [3] [5] [6] [7] [6] [5]
3.  [34] [42] [44] [24] [6] [7]
4.  [2] [34] [54] [332] [23] [43]
5.  [2] [43] [45] [54]  [34] [34]
6.  [2] [34] [54] [54]  [34] [23]  

我是java的新手,因为这篇文章是活跃的,如果有人可以告诉我从这些数组中显示显示的方法,我会尝试几乎所有的东西......