井字棋游戏初级

问题描述 投票:0回答:1

我是编程新手,我正在玩初级水平的井字游戏,但当用户输入无效值时,我无法让我的代码重复。它没有重新提出问题,而是结束了程序。有人能帮我吗 ? :))

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();
            }
        }
    }
}

我尝试过的大多数事情都会导致开关部分出现问题

java arrays loops tic-tac-toe
1个回答
1
投票

当输入无效时,您告诉代码退出循环:

if (playerSymbol != 'X' && playerSymbol != 'O') { System.out.println("Invalid input"); break; }
如果您想跳过循环体的其余部分并重新迭代循环,您要查找的关键字是 

continue

:

if (playerSymbol != 'X' && playerSymbol != 'O') { System.out.println("Invalid input"); continue; }
    
© www.soinside.com 2019 - 2024. All rights reserved.