Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在二维数组上使用foreach循环时会发生什么_Java_Arrays_Foreach_2d - Fatal编程技术网

Java 在二维数组上使用foreach循环时会发生什么

Java 在二维数组上使用foreach循环时会发生什么,java,arrays,foreach,2d,Java,Arrays,Foreach,2d,这张照片 2. 5. 8. 6. 7. 8. 8. 六, 我不明白为什么,这是如此随机,foreach循环试图做什么?为什么不打印第三组数组{6,7,8}? 这是如何工作的?int[]winningPositions= 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 : winn

这张照片 2. 5. 8. 6. 7. 8. 8. 六,

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

int[]winningPositions=
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]);
{{0,1,2}, {3,4,5}, {6,7,8}, {0,3,6}, {1,4,7}, {2,5,8}, {0,4,8}, {2,4,6}}; 对于(int[]winningPosition:winningPositions){ 对于(int i=0;i
有一个抽屉的图像,每个抽屉里有一张钞票。音符上有X,中间有Y,底部有Z。你打开每一个抽屉,看看每一张纸条的第三行。只打印z

每次你打开抽屉,你都需要看所有的线。这样,您就可以为注释的每一行打印内容<代码>winningPosition.length
是该音符上有多少行


查找嵌套循环。

您的for each循环实际上是在2D数组winningPositions内打印每个winningPosition数组的第三个元素:

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]);
                   }
               }
{{0,1,2}, {3,4,5}, {6,7,8}, {0,3,6}, {1,4,7}, {2,5,8}, {0,4,8}, {2,4,6}}
{0,1,2}
此语句
winningPositions[2]
将获取2D数组
winningPositions
中内部数组的每三个元素

您还可以对每个循环进行分解,以便更好地理解它:

在for each循环的第一次迭代中,它将获得winningPositions的第一个元素:

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]);
                   }
               }
{{0,1,2}, {3,4,5}, {6,7,8}, {0,3,6}, {1,4,7}, {2,5,8}, {0,4,8}, {2,4,6}}
{0,1,2}
然后此语句
winningPosition[2]
将获得此子数组中的第三个元素,即
2

在for each循环的第二次迭代中,它将获得winningPositions的第二个元素:

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]);
                   }
               }
{{0,1,2}, {3,4,5}, {6,7,8}, {0,3,6}, {1,4,7}, {2,5,8}, {0,4,8}, {2,4,6}}
{0,1,2}
之后,
winningPosition[2]
将获得子数组中的第三个元素,即
5
,依此类推

这很像在传统的for循环中获得
赢得位置[1][2]

更新

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

我从您的问题中了解到,您希望打印2D数组winningPositions的第三个子数组

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

您只需使用method
Arrays.toString
打印即可:

{3,4,5}
输出:

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

for循环将遍历每个数组,并在完成后打印出内存中的整数。自从您键入:

[6, 7, 8]
您要求从winningPositions中获取int[]。在它将3个整数放入这样一个数组之后,它的内存中就有了他刚才配置的数组的最后一个整数。这就是为什么它只打印出数组的最后一个整数。 如果要打印出所有原始获胜位置,请执行以下操作:

for (int[] winningPosition : winningPositions)
如果要在原始winningPosition中打印每个阵列的特定编号,请执行以下操作:

for (int winningPosition : winningPosition)
X是要打印的整数的索引点。(数组的第一个索引号始终为0。) 您还可以使用我说的最后一种方法继续您最初想要进行的选择。(例如,使用另一个for循环遍历在上一个for循环中创建的int[]winningPosition。)


希望这对你有帮助

我正在提供我目前正在建造的类似东西。。。。这是打印所有数字和单独的数组与新行和数字与[],发挥一点的代码,你将能够打印你喜欢的

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

我是java新手,由于这篇文章很活跃,如果有人能告诉我如何显示这些数组中的事件,那就太好了,我几乎尝试了所有的方法

你到底想打印什么?这里没有b[2],因为b的大小是2。您可以访问b[0]或b[1]。b[2]会给你一个例外。可能重复的只是记住Java中没有真正的2D数组-它是一个数组,每个位置都包含数组。因此,for each返回存储在外部数组中的每个数组<代码>winningPositions[2]应该是{6,7,8},但是代码得到的是每个内部数组的位置[2]处的值。好的,我现在知道了索引的内容,但是,看看编辑后的代码,每个{x,y,z}取第三个元素。所以你只在那里打印z