【发布时间】:2015-05-01 01:54:34
【问题描述】:
代码是井字游戏(正在进行中)。当我运行代码时,它会询问 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);
}
}
【问题讨论】:
-
“没有它就运行它” - 代词太多!
-
您可能希望删除 catch 语句中的第二个
scan.nextInt(),因为您会连续两次要求输入。 -
我建议,你把用户输入循环移动到它自己的方法中,这样你可以进一步降低复杂度
标签: java while-loop