简体   繁体   English

Android开发:不了解二维数组的每个循环

[英]Android Development : Don't understand for each loop with 2d array

I came across this code in a tutorial for creating a simple tic tac toe game. 我在一个用于创建简单的井字游戏的教程中遇到了这段代码。 The complete code can be found here 完整的代码可以在这里找到

what does this for loop and if do? 这是什么for循环,如果这样做? Does the [0],[1],[2] increment itself when the for loop loops? for循环时[0],[1],[2]增加自身? If a 2d array is being convert into 1d array what will it look like? 如果将2d数组转换为1d数组,它将是什么样? Does it maintain the same position? 它保持相同的位置吗?

eg 例如

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

if converted into 1d array will be like this?: 如果转换为一维数组将是这样的:

{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[] gameState = {2,2,2,2,2,2,2,2,2};
int[][] winningStates = {{0,1,2},{3,4,5},{6,7,8},{0,3,6},{1,4,7},{2,5,8},{0,4,8},{2,4,6}};
boolean gameIsActive = true;

for(int[] winningState : winningStates){
            if(gameState[winningState[0]] == gameState[winningState[1]] &&
                    gameState[winningState[1]] == gameState[winningState[2]] &&
                    gameState[winningState[0]] != 2){
                gameIsActive = false;
                String winner = "Black";

                if(gameState[winningState[0]] == 0){
                    winner = "Red";
                }
                //someone has won!
                playAgainMessage again = new playAgainMessage();
                again.playAgainMethod(winner + " has Won !!");
            }

No, the for loop will generate the following values for winningState (it iterates within an array of arrays): 不,for循环将为winningState生成以下值(它在数组的数组内迭代):

{0,1,2} -> winningState[0] = 0, winningState[1] = 1, winningState[2] = 2
{3,4,5} -> winningState[0] = 3, winningState[1] = 4, winningState[2] = 5
{6,7,8}
{0,3,6} -> winningState[0] = 0, winningState[1] = 3, winningState[2] = 6
{1,4,7}
{2,5,8}
{0,4,8}
{2,4,6}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM