如何停止功能循环



我正在做一个简单的井字游戏4x4。我有input((函数,用户可以在其中输入他的数据,printBoard((打印板本身,analyzeBoard((是选择获胜者和done((的所有计算,它只是返回状态。我的问题是,即使我找到了赢家,我也无法停止input((的工作,并且它一遍又一遍地打印板。第一次,我认为问题出在 analyzeBoard(( 中,但后来我发现它实际上返回了我需要的所有内容,问题出在 input(( 中。当我尝试从输入返回时,它要么说缺少返回语句,要么只是没有停止,即使它可以看到获胜者。

public char input ()
{   
    while (status == false || numberOfMovesLeft > 0)
    {
        System.out.println("User "+ whoseTurn + " enter your move: "); //prompt user to make a move
        char userInput = reader.next().charAt(0); // local variable to hold user input
        // validation of user input
        while (userInput != 'a' && userInput != 'b' && userInput != 'c' 
            && userInput != 'd' && userInput != 'e' && userInput != 'f' 
            && userInput != 'g' && userInput != '1' && userInput != '2'
            && userInput != '3' && userInput != '5' && userInput != '6'
            && userInput != '6' && userInput != '7' && userInput != '8'
            && userInput != '9')
        {
            System.out.println("Try again, user "+ whoseTurn + " enter your move: ");
            userInput = reader.next().charAt(0);
        }
        // places user input into a board cell
        for (int row = 0; row < board.length; row++)
        {
            for (int col = 0; col < board[row].length; col++)
            {
                if (board[row][col] == userInput)
                {
                    board[row][col] = whoseTurn;
                }
            }
        }
        // check for tie result
        numberOfMovesLeft--;
        if (numberOfMovesLeft==0)
        {
            System.out.println("Tie!");
            winner = 'T';
            System.out.println(winner);
        }
        analyzeBoard();
        printBoard();
        done();
        whoseTurn = (whoseTurn == 'X') ? '0' : 'X';
    }
    return winner;
}
public void analyzeBoard()
{
    // row winner algoritm
    for (int row = 0; row <=3; row++)
    {
        for (int col = 0; col < 2; col++)
        {
            if (board[row][col] == board[row][col + 1] 
                &&
                board[row][col] == board[row][col + 2])
            {
                System.out.println("winner");
                winner = whoseTurn;
                System.out.println("winner "+ winner);
                System.out.println("whoseTurn "+ whoseTurn);
                status = true;
                System.out.println("status "+status);
                done();
            }
            else
            {
                //System.out.println("status "+status);
            }
        }
    }
    //column winner algoritm
    for (int row = 0; row <2; row++)
    {
        for (int col = 0; col <= 3; col++)
        {
            if (board[row][col] == board[row+1][col] && 
                    board[row][col] == board[row+2][col])
            {
                System.out.println("winner");
                winner = whoseTurn;
                System.out.println("winner "+ winner);
                System.out.println("whoseTurn "+ whoseTurn);
                status = true;
                //System.out.println("status "+status);
            }
        }
    }
    //diagonal winner algoritm
    for (int row = 0; row <2; row++)
    {
        for (int col = 0; col <2; col++)
        {
            if (board[row][col] == board[row+1][col+1] &&  
                    board[row][col] == board[row+2][col+2])
            {
                System.out.println("winner");
                winner = whoseTurn;
                System.out.println("winner "+ winner);
                System.out.println("whoseTurn "+ whoseTurn);
                status = true;
                //System.out.println("status "+status);
            }
        }
    }
    //diagonal winner algoritm
    for (int row = 0; row <2; row++)
    {
        for (int col = 2; col <=3; col++)
        {
            if (board[row][col] == board[row+1][col-1])
            {
                System.out.println("winner");
                winner = whoseTurn;
                System.out.println("winner "+ winner);
                System.out.println("whoseTurn "+ whoseTurn);
                status = true;
                //System.out.println("status "+status);
            }
        }
    }
}

您可以使用break;来终止电流环路,也可以使用return;来终止整个函数调用。

最新更新