Java Tic Tac Toe游戏每次都是平局

Java Tic Tac Toe游戏每次都是平局,java,Java,我想代码应该很清楚。我是一个初学者程序员,我觉得一切都很好。在这种情况下,当一切看起来都很完美,但程序没有按计划运行时,您应该怎么做 简言之,我正在征求outlook对编码项目的建议&这是一个解决方案,可以解释为什么我花了45分钟的时间在这个方法上什么都没做 import java.util.Scanner; public class TicTacToe { public static boolean elementsAreAllEqual(char[] arr) {

我想代码应该很清楚。我是一个初学者程序员,我觉得一切都很好。在这种情况下,当一切看起来都很完美,但程序没有按计划运行时,您应该怎么做

简言之,我正在征求outlook对编码项目的建议&这是一个解决方案,可以解释为什么我花了45分钟的时间在这个方法上什么都没做

import java.util.Scanner;

public class TicTacToe {

    public static boolean elementsAreAllEqual(char[] arr) {

        for(int i = 0; i < arr.length; i++) {
            if(arr[i] != arr[i + 1]) {
                return false;
            }
        }
        return true;
    }

    public static boolean some1HasWon(char[][] g) {

        char[] treE = new char[3];

        // horizontal straight lines (rows of 3 alike)
        for(int r = 0; r < g.length; r++) {
            for(int c = 0; c < g.length; c++) {
                treE[c] = g[r][c];
            }
            if(elementsAreAllEqual(treE)) {
                            return true;
                    }
            treE = new char[3];
        }

        // vertical straight lines (columns of 3 alike)
        for(int c = 0; c < g.length; c++) {
                        for(int r = 0; r < g.length; r++) {
                                treE[r] = g[c][r];
                        }
                        if(elementsAreAllEqual(treE)) {
                            return true;
                    }
                        treE = new char[3];
                }

        // upward diagonal
        for(int i = 0; i < g.length; i++) {
            treE[i] = g[g.length-i-1][i];
        }
        if(elementsAreAllEqual(treE)) {
            return true;
        }
        treE = new char[3];

        // downward diagonal
        for(int i = 0; i < g.length; i++) {
            treE[i] = g[i][i];
        }
        if(elementsAreAllEqual(treE)) {
                        return true;
                }

        return false;
    }

    public static void main(String args[]) {

        char[][] grid = new char[3][3];
        Scanner s = new Scanner(System.in);
        System.out.println("Tic-Tac-Toe\n");

        int goCount = 0;
        char player;
        boolean draw = true;
        boolean end = false;

        do {
            if(goCount % 2 == 0) {
                player = 'X';
                System.out.print("'" + player + "', choose your location (row, column): ");
            }
            else {
                player = 'O';
                System.out.print("'" + player + "', choose your location (row, column): ");
            }
            String position = s.nextLine();
            String[] p = position.split(" ");
            int[] pos = {Integer.parseInt(p[0]), Integer.parseInt(p[1])}; 

            grid[pos[0]][pos[1]] = player;

            System.out.println();

            for(int y = 0; y < 3; y++) {
                System.out.print("\t");
                for(int x = 0; x < 3; x++) {
                    if(grid[y][x] != ' ') {
                        System.out.print(grid[y][x] + " ");
                    }
                    else {
                        System.out.print("  ");
                    }
                }
                System.out.println();
            }

            System.out.println();

            if(goCount > 4) {
                if(some1HasWon(grid)) {
                    end = true;
                }
                else if(goCount >= 8) {
                    draw = true;
                    end = true;
                }
            }
            goCount++;
        }
        while(end != true);

        if(draw) {
            System.out.println("The game was a draw.");
        }
        else if(goCount % 2 == 0) {
            System.out.println("Player 'X' wins the game.");
        }
        else {
            System.out.println("Player 'O' wins the game.");
        }
    }

}

import java.util.Scanner;
公共类Tictatcoe{
公共静态布尔元素sareallequal(char[]arr){
对于(int i=0;i4){
如果(有人赢了(电网)){
结束=真;
}
否则如果(goCount>=8){
绘制=真;
结束=真;
}
}
goCount++;
}
while(end!=true);
如果(抽签){
System.out.println(“这场比赛是平局。”);
}
否则如果(goCount%2==0){
System.out.println(“玩家“X”赢得游戏。”);
}
否则{
System.out.println(“玩家‘O’赢得游戏。”);
}
}
}

i=arr.length-1
时,您的方法
elementaAreAllEqual
访问数组外的元素,您应该只迭代到
arr.length-1

public static boolean elementsAreAllEqual(char[] arr) {

        for(int i = 0; i < arr.length - 1; i++) {
            if(arr[i] != arr[i + 1]) {
                return false;
            }
        }
        return true;
    }

您可以使用调试工具一步一步地检查代码。
if(goCount > 4) {
   if(some1HasWon(grid)) {
        end = true;
        draw = false;
   } else if(goCount >= 8) {
         draw = true;
         end = true;
   }
}