我是编程新手,我正在玩初级水平的井字游戏,但当用户输入无效值时,我无法让我的代码重复。它没有重新提出问题,而是结束了程序。有人能帮我吗 ? :))
import java.util.Scanner;
public class Subject {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
char[][] GameBoard = new char[3][3];
for (int row = 0; row < GameBoard.length; row++) {
for (int col = 0; col < GameBoard[row].length; col++) {
GameBoard[row][col] = (char)('0' + row * 3 + col);
System.out.print(GameBoard[row][col] + "|" + "\t");
}
System.out.println();
for (int i = 0; i < GameBoard[row].length * 3; i++) {
System.out.print("-");
}
System.out.println();
}
boolean GameOver = false;
while (!GameOver) {
System.out.println("Please enter 'X' or 'O' to choose your character: ");
char playerSymbol = myScanner.next().charAt(0);
if (playerSymbol != 'X' && playerSymbol != 'O') {
System.out.println("Invalid input");
break;
}
System.out.println(" Please enter a number from 0 to 8 to place your character ");
int NumbersOnBoard = myScanner.nextInt();
switch (NumbersOnBoard) {
case 0:
GameBoard[0][0] = playerSymbol;
break;
case 1:
GameBoard[0][1] = playerSymbol;
break;
case 2:
GameBoard[0][2] = playerSymbol;
break;
case 3:
GameBoard[1][0] = playerSymbol;
break;
case 4:
GameBoard[1][1] = playerSymbol;
break;
case 5:
GameBoard[1][2] = playerSymbol;
break;
case 6:
GameBoard[2][0] = playerSymbol;
break;
case 7:
GameBoard[2][1] = playerSymbol;
break;
case 8:
GameBoard[2][2] = playerSymbol;
break;
default:
System.out.println(":(");
return;
}
for (int row = 0; row < GameBoard.length; row++) {
for (int col = 0; col < GameBoard[row].length; col++) {
System.out.print(GameBoard[row][col] + "|" + "\t");
}
System.out.println();
for (int i = 0; i < GameBoard[row].length * 3; i++) {
System.out.print("-");
}
System.out.println();
}
}
}
}
我尝试过的大多数事情都会导致开关部分出现问题
当输入无效时,您告诉代码退出循环:
if (playerSymbol != 'X' && playerSymbol != 'O') {
System.out.println("Invalid input");
break;
}
如果您想跳过循环体的其余部分并重新迭代循环,您要查找的关键字是 continue
:
if (playerSymbol != 'X' && playerSymbol != 'O') {
System.out.println("Invalid input");
continue;
}