Java 循环卡住时,请执行此操作

Java 循环卡住时,请执行此操作,java,while-loop,Java,While Loop,代码是一个正在进行的Tic-Tac-Toe游戏。当我运行代码时,它询问X的位置号,然后停止。它与while循环有关,因为当我在没有它的情况下运行它时,它工作得很好。然而,我需要循环将X设置为false,这样它就变成了O import java.util.Scanner; class TicTacToe { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int X

代码是一个正在进行的Tic-Tac-Toe游戏。当我运行代码时,它询问X的位置号,然后停止。它与while循环有关,因为当我在没有它的情况下运行它时,它工作得很好。然而,我需要循环将X设置为false,这样它就变成了O

import java.util.Scanner;
class TicTacToe


{
public static void main(String[] args)

{
    Scanner scan = new Scanner(System.in);
    int XInput, OInput;
    boolean IfGameOver;
    String []board = {"1","2","3","4","5","6","7","8","9"};
    IfGameOver = false;
    boolean Xturn, Oturn;
    Xturn = true;
    Oturn = false;

    System.out.print("Welcome to Tic-Tac-Toe!\n\n");
do
    {

        {
         System.out.println(" " + board[0] + board[1] + board[2]);
         System.out.println(" " + board[3] + board[4] + board[5]);
         System.out.println(" " + board[6] + board[7] + board[8]);
        }
             if (Xturn)
             System.out.println("It is X's turn, position number?");
             if (Oturn)
             System.out.println("It is O's turn, position number?");

            do
                {
                try
                {
                XInput = scan.nextInt();
                board[XInput-1] = "X";
                Oturn= true;
                Xturn = false;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    XInput = scan.nextInt();
                }
                }while(Xturn = true);
            do
                {
                try
                {
                OInput = scan.nextInt();
                board[OInput-1] = "X";
                Oturn = false;
                Xturn = true;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    OInput = scan.nextInt();
                }
                }while (Oturn = true);

    } while (!IfGameOver);
}
}

问题可能出在这一行:

import java.util.Scanner;
class TicTacToe


{
public static void main(String[] args)

{
    Scanner scan = new Scanner(System.in);
    int XInput, OInput;
    boolean IfGameOver;
    String []board = {"1","2","3","4","5","6","7","8","9"};
    IfGameOver = false;
    boolean Xturn, Oturn;
    Xturn = true;
    Oturn = false;

    System.out.print("Welcome to Tic-Tac-Toe!\n\n");
do
    {

        {
         System.out.println(" " + board[0] + board[1] + board[2]);
         System.out.println(" " + board[3] + board[4] + board[5]);
         System.out.println(" " + board[6] + board[7] + board[8]);
        }
             if (Xturn)
             System.out.println("It is X's turn, position number?");
             if (Oturn)
             System.out.println("It is O's turn, position number?");

            do
                {
                try
                {
                XInput = scan.nextInt();
                board[XInput-1] = "X";
                Oturn= true;
                Xturn = false;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    XInput = scan.nextInt();
                }
                }while(Xturn = true);
            do
                {
                try
                {
                OInput = scan.nextInt();
                board[OInput-1] = "X";
                Oturn = false;
                Xturn = true;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    OInput = scan.nextInt();
                }
                }while (Oturn = true);

    } while (!IfGameOver);
}
}
            }while(Xturn = true);
这不是一个比较。=运算符是赋值。这会将值true分配给xtorn,然后继续循环,因为分配的结果始终是分配的值

import java.util.Scanner;
class TicTacToe


{
public static void main(String[] args)

{
    Scanner scan = new Scanner(System.in);
    int XInput, OInput;
    boolean IfGameOver;
    String []board = {"1","2","3","4","5","6","7","8","9"};
    IfGameOver = false;
    boolean Xturn, Oturn;
    Xturn = true;
    Oturn = false;

    System.out.print("Welcome to Tic-Tac-Toe!\n\n");
do
    {

        {
         System.out.println(" " + board[0] + board[1] + board[2]);
         System.out.println(" " + board[3] + board[4] + board[5]);
         System.out.println(" " + board[6] + board[7] + board[8]);
        }
             if (Xturn)
             System.out.println("It is X's turn, position number?");
             if (Oturn)
             System.out.println("It is O's turn, position number?");

            do
                {
                try
                {
                XInput = scan.nextInt();
                board[XInput-1] = "X";
                Oturn= true;
                Xturn = false;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    XInput = scan.nextInt();
                }
                }while(Xturn = true);
            do
                {
                try
                {
                OInput = scan.nextInt();
                board[OInput-1] = "X";
                Oturn = false;
                Xturn = true;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    OInput = scan.nextInt();
                }
                }while (Oturn = true);

    } while (!IfGameOver);
}
}
为了进行比较,可以使用==。但由于Xtrn一开始是一个布尔值,您可以简单地编写:

import java.util.Scanner;
class TicTacToe


{
public static void main(String[] args)

{
    Scanner scan = new Scanner(System.in);
    int XInput, OInput;
    boolean IfGameOver;
    String []board = {"1","2","3","4","5","6","7","8","9"};
    IfGameOver = false;
    boolean Xturn, Oturn;
    Xturn = true;
    Oturn = false;

    System.out.print("Welcome to Tic-Tac-Toe!\n\n");
do
    {

        {
         System.out.println(" " + board[0] + board[1] + board[2]);
         System.out.println(" " + board[3] + board[4] + board[5]);
         System.out.println(" " + board[6] + board[7] + board[8]);
        }
             if (Xturn)
             System.out.println("It is X's turn, position number?");
             if (Oturn)
             System.out.println("It is O's turn, position number?");

            do
                {
                try
                {
                XInput = scan.nextInt();
                board[XInput-1] = "X";
                Oturn= true;
                Xturn = false;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    XInput = scan.nextInt();
                }
                }while(Xturn = true);
            do
                {
                try
                {
                OInput = scan.nextInt();
                board[OInput-1] = "X";
                Oturn = false;
                Xturn = true;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    OInput = scan.nextInt();
                }
                }while (Oturn = true);

    } while (!IfGameOver);
}
}
            }while(Xturn);

问题可能出在这一行:

import java.util.Scanner;
class TicTacToe


{
public static void main(String[] args)

{
    Scanner scan = new Scanner(System.in);
    int XInput, OInput;
    boolean IfGameOver;
    String []board = {"1","2","3","4","5","6","7","8","9"};
    IfGameOver = false;
    boolean Xturn, Oturn;
    Xturn = true;
    Oturn = false;

    System.out.print("Welcome to Tic-Tac-Toe!\n\n");
do
    {

        {
         System.out.println(" " + board[0] + board[1] + board[2]);
         System.out.println(" " + board[3] + board[4] + board[5]);
         System.out.println(" " + board[6] + board[7] + board[8]);
        }
             if (Xturn)
             System.out.println("It is X's turn, position number?");
             if (Oturn)
             System.out.println("It is O's turn, position number?");

            do
                {
                try
                {
                XInput = scan.nextInt();
                board[XInput-1] = "X";
                Oturn= true;
                Xturn = false;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    XInput = scan.nextInt();
                }
                }while(Xturn = true);
            do
                {
                try
                {
                OInput = scan.nextInt();
                board[OInput-1] = "X";
                Oturn = false;
                Xturn = true;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    OInput = scan.nextInt();
                }
                }while (Oturn = true);

    } while (!IfGameOver);
}
}
            }while(Xturn = true);
这不是一个比较。=运算符是赋值。这会将值true分配给xtorn,然后继续循环,因为分配的结果始终是分配的值

import java.util.Scanner;
class TicTacToe


{
public static void main(String[] args)

{
    Scanner scan = new Scanner(System.in);
    int XInput, OInput;
    boolean IfGameOver;
    String []board = {"1","2","3","4","5","6","7","8","9"};
    IfGameOver = false;
    boolean Xturn, Oturn;
    Xturn = true;
    Oturn = false;

    System.out.print("Welcome to Tic-Tac-Toe!\n\n");
do
    {

        {
         System.out.println(" " + board[0] + board[1] + board[2]);
         System.out.println(" " + board[3] + board[4] + board[5]);
         System.out.println(" " + board[6] + board[7] + board[8]);
        }
             if (Xturn)
             System.out.println("It is X's turn, position number?");
             if (Oturn)
             System.out.println("It is O's turn, position number?");

            do
                {
                try
                {
                XInput = scan.nextInt();
                board[XInput-1] = "X";
                Oturn= true;
                Xturn = false;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    XInput = scan.nextInt();
                }
                }while(Xturn = true);
            do
                {
                try
                {
                OInput = scan.nextInt();
                board[OInput-1] = "X";
                Oturn = false;
                Xturn = true;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    OInput = scan.nextInt();
                }
                }while (Oturn = true);

    } while (!IfGameOver);
}
}
为了进行比较,可以使用==。但由于Xtrn一开始是一个布尔值,您可以简单地编写:

import java.util.Scanner;
class TicTacToe


{
public static void main(String[] args)

{
    Scanner scan = new Scanner(System.in);
    int XInput, OInput;
    boolean IfGameOver;
    String []board = {"1","2","3","4","5","6","7","8","9"};
    IfGameOver = false;
    boolean Xturn, Oturn;
    Xturn = true;
    Oturn = false;

    System.out.print("Welcome to Tic-Tac-Toe!\n\n");
do
    {

        {
         System.out.println(" " + board[0] + board[1] + board[2]);
         System.out.println(" " + board[3] + board[4] + board[5]);
         System.out.println(" " + board[6] + board[7] + board[8]);
        }
             if (Xturn)
             System.out.println("It is X's turn, position number?");
             if (Oturn)
             System.out.println("It is O's turn, position number?");

            do
                {
                try
                {
                XInput = scan.nextInt();
                board[XInput-1] = "X";
                Oturn= true;
                Xturn = false;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    XInput = scan.nextInt();
                }
                }while(Xturn = true);
            do
                {
                try
                {
                OInput = scan.nextInt();
                board[OInput-1] = "X";
                Oturn = false;
                Xturn = true;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    OInput = scan.nextInt();
                }
                }while (Oturn = true);

    } while (!IfGameOver);
}
}
            }while(Xturn);
改变

import java.util.Scanner;
class TicTacToe


{
public static void main(String[] args)

{
    Scanner scan = new Scanner(System.in);
    int XInput, OInput;
    boolean IfGameOver;
    String []board = {"1","2","3","4","5","6","7","8","9"};
    IfGameOver = false;
    boolean Xturn, Oturn;
    Xturn = true;
    Oturn = false;

    System.out.print("Welcome to Tic-Tac-Toe!\n\n");
do
    {

        {
         System.out.println(" " + board[0] + board[1] + board[2]);
         System.out.println(" " + board[3] + board[4] + board[5]);
         System.out.println(" " + board[6] + board[7] + board[8]);
        }
             if (Xturn)
             System.out.println("It is X's turn, position number?");
             if (Oturn)
             System.out.println("It is O's turn, position number?");

            do
                {
                try
                {
                XInput = scan.nextInt();
                board[XInput-1] = "X";
                Oturn= true;
                Xturn = false;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    XInput = scan.nextInt();
                }
                }while(Xturn = true);
            do
                {
                try
                {
                OInput = scan.nextInt();
                board[OInput-1] = "X";
                Oturn = false;
                Xturn = true;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    OInput = scan.nextInt();
                }
                }while (Oturn = true);

    } while (!IfGameOver);
}
}

import java.util.Scanner;
class TicTacToe


{
public static void main(String[] args)

{
    Scanner scan = new Scanner(System.in);
    int XInput, OInput;
    boolean IfGameOver;
    String []board = {"1","2","3","4","5","6","7","8","9"};
    IfGameOver = false;
    boolean Xturn, Oturn;
    Xturn = true;
    Oturn = false;

    System.out.print("Welcome to Tic-Tac-Toe!\n\n");
do
    {

        {
         System.out.println(" " + board[0] + board[1] + board[2]);
         System.out.println(" " + board[3] + board[4] + board[5]);
         System.out.println(" " + board[6] + board[7] + board[8]);
        }
             if (Xturn)
             System.out.println("It is X's turn, position number?");
             if (Oturn)
             System.out.println("It is O's turn, position number?");

            do
                {
                try
                {
                XInput = scan.nextInt();
                board[XInput-1] = "X";
                Oturn= true;
                Xturn = false;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    XInput = scan.nextInt();
                }
                }while(Xturn = true);
            do
                {
                try
                {
                OInput = scan.nextInt();
                board[OInput-1] = "X";
                Oturn = false;
                Xturn = true;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    OInput = scan.nextInt();
                }
                }while (Oturn = true);

    } while (!IfGameOver);
}
}
xtorn=true是一个赋值,不会检查xtorn是否为true。为此,必须使用xtorn==true或simple xtorn。奥图恩也是如此

import java.util.Scanner;
class TicTacToe


{
public static void main(String[] args)

{
    Scanner scan = new Scanner(System.in);
    int XInput, OInput;
    boolean IfGameOver;
    String []board = {"1","2","3","4","5","6","7","8","9"};
    IfGameOver = false;
    boolean Xturn, Oturn;
    Xturn = true;
    Oturn = false;

    System.out.print("Welcome to Tic-Tac-Toe!\n\n");
do
    {

        {
         System.out.println(" " + board[0] + board[1] + board[2]);
         System.out.println(" " + board[3] + board[4] + board[5]);
         System.out.println(" " + board[6] + board[7] + board[8]);
        }
             if (Xturn)
             System.out.println("It is X's turn, position number?");
             if (Oturn)
             System.out.println("It is O's turn, position number?");

            do
                {
                try
                {
                XInput = scan.nextInt();
                board[XInput-1] = "X";
                Oturn= true;
                Xturn = false;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    XInput = scan.nextInt();
                }
                }while(Xturn = true);
            do
                {
                try
                {
                OInput = scan.nextInt();
                board[OInput-1] = "X";
                Oturn = false;
                Xturn = true;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    OInput = scan.nextInt();
                }
                }while (Oturn = true);

    } while (!IfGameOver);
}
}
另外,如所述,您需要在循环内使IfGameOver的值变为true,以便代码退出外部do while循环。

Change

import java.util.Scanner;
class TicTacToe


{
public static void main(String[] args)

{
    Scanner scan = new Scanner(System.in);
    int XInput, OInput;
    boolean IfGameOver;
    String []board = {"1","2","3","4","5","6","7","8","9"};
    IfGameOver = false;
    boolean Xturn, Oturn;
    Xturn = true;
    Oturn = false;

    System.out.print("Welcome to Tic-Tac-Toe!\n\n");
do
    {

        {
         System.out.println(" " + board[0] + board[1] + board[2]);
         System.out.println(" " + board[3] + board[4] + board[5]);
         System.out.println(" " + board[6] + board[7] + board[8]);
        }
             if (Xturn)
             System.out.println("It is X's turn, position number?");
             if (Oturn)
             System.out.println("It is O's turn, position number?");

            do
                {
                try
                {
                XInput = scan.nextInt();
                board[XInput-1] = "X";
                Oturn= true;
                Xturn = false;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    XInput = scan.nextInt();
                }
                }while(Xturn = true);
            do
                {
                try
                {
                OInput = scan.nextInt();
                board[OInput-1] = "X";
                Oturn = false;
                Xturn = true;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    OInput = scan.nextInt();
                }
                }while (Oturn = true);

    } while (!IfGameOver);
}
}
}while(Xturn = true);
...
}while (Oturn = true);

import java.util.Scanner;
class TicTacToe


{
public static void main(String[] args)

{
    Scanner scan = new Scanner(System.in);
    int XInput, OInput;
    boolean IfGameOver;
    String []board = {"1","2","3","4","5","6","7","8","9"};
    IfGameOver = false;
    boolean Xturn, Oturn;
    Xturn = true;
    Oturn = false;

    System.out.print("Welcome to Tic-Tac-Toe!\n\n");
do
    {

        {
         System.out.println(" " + board[0] + board[1] + board[2]);
         System.out.println(" " + board[3] + board[4] + board[5]);
         System.out.println(" " + board[6] + board[7] + board[8]);
        }
             if (Xturn)
             System.out.println("It is X's turn, position number?");
             if (Oturn)
             System.out.println("It is O's turn, position number?");

            do
                {
                try
                {
                XInput = scan.nextInt();
                board[XInput-1] = "X";
                Oturn= true;
                Xturn = false;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    XInput = scan.nextInt();
                }
                }while(Xturn = true);
            do
                {
                try
                {
                OInput = scan.nextInt();
                board[OInput-1] = "X";
                Oturn = false;
                Xturn = true;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    OInput = scan.nextInt();
                }
                }while (Oturn = true);

    } while (!IfGameOver);
}
}
xtorn=true是一个赋值,不会检查xtorn是否为true。为此,必须使用xtorn==true或simple xtorn。奥图恩也是如此

import java.util.Scanner;
class TicTacToe


{
public static void main(String[] args)

{
    Scanner scan = new Scanner(System.in);
    int XInput, OInput;
    boolean IfGameOver;
    String []board = {"1","2","3","4","5","6","7","8","9"};
    IfGameOver = false;
    boolean Xturn, Oturn;
    Xturn = true;
    Oturn = false;

    System.out.print("Welcome to Tic-Tac-Toe!\n\n");
do
    {

        {
         System.out.println(" " + board[0] + board[1] + board[2]);
         System.out.println(" " + board[3] + board[4] + board[5]);
         System.out.println(" " + board[6] + board[7] + board[8]);
        }
             if (Xturn)
             System.out.println("It is X's turn, position number?");
             if (Oturn)
             System.out.println("It is O's turn, position number?");

            do
                {
                try
                {
                XInput = scan.nextInt();
                board[XInput-1] = "X";
                Oturn= true;
                Xturn = false;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    XInput = scan.nextInt();
                }
                }while(Xturn = true);
            do
                {
                try
                {
                OInput = scan.nextInt();
                board[OInput-1] = "X";
                Oturn = false;
                Xturn = true;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    OInput = scan.nextInt();
                }
                }while (Oturn = true);

    } while (!IfGameOver);
}
}

此外,如所述,您需要在循环内使IfGameOver的值变为true,以便代码退出外部do while循环。

您有多个问题。如前所述,您的while语句中没有使用相等检查,但其他问题会覆盖此问题。在X的回合之后,但在O的回合的do-while循环之前,您正在将Oturn设置为true。因此,您将在X输入之后立即进入Oturn do循环。这应该会把它清理干净

import java.util.Scanner;
class TicTacToe


{
public static void main(String[] args)

{
    Scanner scan = new Scanner(System.in);
    int XInput, OInput;
    boolean IfGameOver;
    String []board = {"1","2","3","4","5","6","7","8","9"};
    IfGameOver = false;
    boolean Xturn, Oturn;
    Xturn = true;
    Oturn = false;

    System.out.print("Welcome to Tic-Tac-Toe!\n\n");
do
    {

        {
         System.out.println(" " + board[0] + board[1] + board[2]);
         System.out.println(" " + board[3] + board[4] + board[5]);
         System.out.println(" " + board[6] + board[7] + board[8]);
        }
             if (Xturn)
             System.out.println("It is X's turn, position number?");
             if (Oturn)
             System.out.println("It is O's turn, position number?");

            do
                {
                try
                {
                XInput = scan.nextInt();
                board[XInput-1] = "X";
                Oturn= true;
                Xturn = false;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    XInput = scan.nextInt();
                }
                }while(Xturn = true);
            do
                {
                try
                {
                OInput = scan.nextInt();
                board[OInput-1] = "X";
                Oturn = false;
                Xturn = true;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    OInput = scan.nextInt();
                }
                }while (Oturn = true);

    } while (!IfGameOver);
}
}
import java.util.Scanner;
class TicTacToe

{
public static void main(String[] args)

{
    Scanner scan = new Scanner(System.in);
    int Input;
    boolean IfGameOver;
    String []board = {"1","2","3","4","5","6","7","8","9"};
    IfGameOver = false;
    boolean Xturn = true;

    System.out.print("Welcome to Tic-Tac-Toe!\n\n");
do
    {

        {
         System.out.println(" " + board[0] + board[1] + board[2]);
         System.out.println(" " + board[3] + board[4] + board[5]);
         System.out.println(" " + board[6] + board[7] + board[8]);
        }
             if (Xturn)
             System.out.println("It is X's turn, position number?");
             else
             System.out.println("It is O's turn, position number?");

             Input = -1;
            do
                {
                try
                {
                Input = scan.nextInt();
                board[Input-1] = (Xturn?"X":"O");
                Xturn = !Xturn;
                }
                catch (Exception e)
                {
                    System.out.println("Invalid input. Please enter a valid position number");
                }
                }while(Input==-1);
    } while (!IfGameOver);
}
}

你有很多问题。如前所述,您的while语句中没有使用相等检查,但其他问题会覆盖此问题。在X的回合之后,但在O的回合的do-while循环之前,您正在将Oturn设置为true。因此,您将在X输入之后立即进入Oturn do循环。这应该会把它清理干净

import java.util.Scanner;
class TicTacToe


{
public static void main(String[] args)

{
    Scanner scan = new Scanner(System.in);
    int XInput, OInput;
    boolean IfGameOver;
    String []board = {"1","2","3","4","5","6","7","8","9"};
    IfGameOver = false;
    boolean Xturn, Oturn;
    Xturn = true;
    Oturn = false;

    System.out.print("Welcome to Tic-Tac-Toe!\n\n");
do
    {

        {
         System.out.println(" " + board[0] + board[1] + board[2]);
         System.out.println(" " + board[3] + board[4] + board[5]);
         System.out.println(" " + board[6] + board[7] + board[8]);
        }
             if (Xturn)
             System.out.println("It is X's turn, position number?");
             if (Oturn)
             System.out.println("It is O's turn, position number?");

            do
                {
                try
                {
                XInput = scan.nextInt();
                board[XInput-1] = "X";
                Oturn= true;
                Xturn = false;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    XInput = scan.nextInt();
                }
                }while(Xturn = true);
            do
                {
                try
                {
                OInput = scan.nextInt();
                board[OInput-1] = "X";
                Oturn = false;
                Xturn = true;
                }
                catch (NumberFormatException e)
                {
                    System.out.println("Invalid input. Please enter a position number");
                    OInput = scan.nextInt();
                }
                }while (Oturn = true);

    } while (!IfGameOver);
}
}
import java.util.Scanner;
class TicTacToe

{
public static void main(String[] args)

{
    Scanner scan = new Scanner(System.in);
    int Input;
    boolean IfGameOver;
    String []board = {"1","2","3","4","5","6","7","8","9"};
    IfGameOver = false;
    boolean Xturn = true;

    System.out.print("Welcome to Tic-Tac-Toe!\n\n");
do
    {

        {
         System.out.println(" " + board[0] + board[1] + board[2]);
         System.out.println(" " + board[3] + board[4] + board[5]);
         System.out.println(" " + board[6] + board[7] + board[8]);
        }
             if (Xturn)
             System.out.println("It is X's turn, position number?");
             else
             System.out.println("It is O's turn, position number?");

             Input = -1;
            do
                {
                try
                {
                Input = scan.nextInt();
                board[Input-1] = (Xturn?"X":"O");
                Xturn = !Xturn;
                }
                catch (Exception e)
                {
                    System.out.println("Invalid input. Please enter a valid position number");
                }
                }while(Input==-1);
    } while (!IfGameOver);
}
}

不用它运行它-代词太多了!您可能希望删除catch语句中的第二个scan.nextInt,因为您将连续两次请求输入。我建议,您使用用户输入循环并将其移动到自己的方法,这样可以进一步降低复杂性,在没有它的情况下运行它-代词太多!您可能希望删除catch语句中的第二个scan.nextInt,因为您将连续两次请求输入。我建议您使用用户输入循环并将其移动到自己的方法,这样可以稍微降低复杂性further@MadProgrammer是的,我做到了:s@JustinBeaubien:这可能不是代码中的唯一错误;我没有彻底检查过。@Mad是的,我检查过:s@JustinBeaubien:这可能不是代码中的唯一错误;我没有彻底检查过。