java Do While循环被卡住
代码是一个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);
}
}
# 1 楼答案
问题可能出在这一行:
这不是一个比较。
=
运算符是赋值。这会将值true
分配给Xturn
,然后继续循环,因为分配的结果始终是分配的值为了进行比较,可以使用
==
。但由于Xturn
是一个布尔值,您可以简单地编写:# 2 楼答案
改变
到
Xturn = true
是一个赋值,不会检查Xturn
是否为真。为此,必须使用Xturn == true
或简单Xturn
。这同样适用于Oturn
另外,如TAsk所述,您需要
IfGameOver
的值在循环内变为true,以便代码退出外部do while
循环# 3 楼答案
你有很多问题。如前所述,您的while语句中没有使用相等检查,但其他问题会覆盖此问题。在X的回合之后,但在O的回合的do-while循环之前,您正在将Oturn设置为true。因此,您将在X输入之后立即进入Oturn do循环。这应该会把它清理干净