0

プログラムが勝者を出力した後、ユーザーにもう一度プレイするか終了するかを尋ねますが、何らかの理由でスキャナーはこの入力を読み取りません (続行するかどうか)。while ループの外側に継続のプロンプトを出しましたが、まだ運がありません: "|XXX| | O | | O|

プレーヤー X が勝者です。また遊びたいですか?はいの場合は Y、いいえの場合は N を入力してください。BUILD SUCCESSFUL (合計時間: 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