0

afer 程序输出获胜者,我询问用户是否想再次播放或退出,但由于某种原因扫描仪没有读取此输入(是否继续)。我什至在while循环之外提示继续,但仍然没有运气:“|XXX| | O | | O|

玩家 X 是赢家!你想再玩一次吗?输入 Y 表示是或 N 表示否!构建成功(总时间:26 秒)“

这是代码:

public class TicTacToeRunner
{
   public static void main(String[] args)
   {
      int row;
      int column;
      Scanner in = new Scanner(System.in);
      TicTacToe game = new TicTacToe();
      String player = "X";
      boolean done = false; 
      int moveCounter = 0;
      String answer;


       int noMovement = -2;
       int toQuit = -1;
       int movesToCheckWins = 5;
       int movesToCheckTies = 7;



      while (!done) 
      {

         do
         {
            row = column = noMovement;

            System.out.print("\n" + game);
            System.out.print("Please make a move " + (moveCounter + 1) + "(" + player + ")\nRow for " + player.toUpperCase() + " (or -1 to exit): ");

            if (in.hasNextInt()) //check if input is an integer
             {
               row = in.nextInt();
             }

             if (row == toQuit) //if entered -1 quit the game
             {
                 done = true;
                 System.out.println("Player " +player.toUpperCase() + " ended the game !");
                 System.exit(0); //game termination
             }
             else
             {
                System.out.print("Column for " + player.toUpperCase() + ": ");
                if(in.hasNextInt()) //check if input is an integer
                 {
                  column = in.nextInt();
                 }
             }
         }while(!game.checkForValidMove(row, column)); //end of do-while loop if checkForValidMove is false

        moveCounter++;
        game.set(row, column, player);

        if (moveCounter >= movesToCheckWins) //check wins after 5 moves
        {
            if (game.checkForWin(row, column, player)) //if a winner
            {
                done = true;
                System.out.println("\n" + game);
                System.out.println("Player " + player.toUpperCase() + " is a winner!");

            }
        }

        if (moveCounter >= movesToCheckTies) //Check for ties after 7 moves
        {
            if (game.checkForEarlyTie()) //check for early tie
            {
                done = true;
                System.out.println("\n" + game);
                System.out.println("Tie Game after " + moveCounter + " moves!");

            }
        }


     // Switching players 

     if (player.equals("X"))
     {
           player = "O";
     }
        else
     {
           player = "X";
     }


      }


                System.out.println("Do you want to play again? Enter Y for yes or N for no!");

                answer = in.nextLine();
                answer = answer.toLowerCase(); //change input to lowercase for bullet proofing
                if(answer.equals("y"))
                {
                done = false;
                player = "X";
                moveCounter = 0;
                game.resetTheGame();

                }

              else
                 {
                 System.exit(0); //program termination
               }


  }

}
4

1 回答 1

0

使用do while循环。你的工作很容易..

import java.util.Scanner;

public class TicTacToeRunner {
    public static void main(String[] args) {
        int row;
        int column;
        Scanner in = new Scanner(System.in);
        TicTacToe game = new TicTacToe();
        String player = "X";
        boolean done = false;
        String choice = "";
        int moveCounter = 0;
        String answer;

        int noMovement = -2;
        int toQuit = -1;
        int movesToCheckWins = 5;
        int movesToCheckTies = 7;
        do{
        while (!done) {
            do {
                row = column = noMovement;

                System.out.print("\n" + game);
                System.out.print("Please make a move " + (moveCounter + 1) + "(" + player + ")\nRow for " + player.toUpperCase() + " (or -1 to exit): ");

                if (in.hasNextInt()) // check if input is an integer
                {
                    row = in.nextInt();
                }

                if (row == toQuit) // if entered -1 quit the game
                {
                    done = true;
                    System.out.println("Player " + player.toUpperCase() + " ended the game !");
                    System.exit(0); // game termination
                } else {
                    System.out.print("Column for " + player.toUpperCase() + ": ");
                    if (in.hasNextInt()) // check if input is an integer
                    {
                        column = in.nextInt();
                    }
                }
            } while (!game.checkForValidMove(row, column)); // end of do-while
                                                            // loop if
                                                            // checkForValidMove
                                                            // is false

            moveCounter++;
            game.set(row, column, player);

            if (moveCounter >= movesToCheckWins) // check wins after 5 moves
            {
                if (game.checkForWin(row, column, player)) // if a winner
                {
                    done = true;
                    System.out.println("\n" + game);
                    System.out.println("Player " + player.toUpperCase() + " is a winner!");

                }
            }

            if (moveCounter >= movesToCheckTies) // Check for ties after 7 moves
            {
                if (game.checkForEarlyTie()) // check for early tie
                {
                    done = true;
                    System.out.println("\n" + game);
                    System.out.println("Tie Game after " + moveCounter + " moves!");

                }
            }

            // Switching players

            if (player.equals("X")) {
                player = "O";
            } else {
                player = "X";
            }

        }

        System.out.println("Do you want to play again? Enter Y for yes or N for no!");
        choice = in.nextLine();
        }while(choice.equals("y")||choice.equals("Y"));

    }

}
于 2013-11-14T07:03:17.777 回答