有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

tic-tac-toe似乎无法正确编译我的方法(Java)

我正在尝试找出我的winorTie方法在这个我尝试创建的TictatcToe小游戏中到底出了什么问题。有人能帮忙吗?谢谢

package tictactoegame;

/**
 *
 * @author Douglas Boulden
 */
public class tictactoegame {

    static int [][] gameboard;
    static final int EMPTY = 0;
    static final int NOUGHT = -1;
    static final int CROSS = 1;

    static void set (int val, int row) throws IllegalArgumentException {
        int col = 0;
        if (gameboard[row][col] == EMPTY)
                gameboard[row][col] = val;
        else throw new
            IllegalArgumentException("Player already there!");
    }

    static void displayBoard () {
        for (int[] gameboard1 : gameboard) {
            System.out.print("|");
            for (int c = 0; c < gameboard1.length; c++) {
                switch (gameboard1[c]) {
                    case NOUGHT:
                        System.out.print("0");
                        break;
                    case CROSS:
                        System.out.print("X");
                        break;
                    default:           //Empty
                        System.out.print(" ");
                }
                System.out.print("|");
            }
            System.out.println("\n------\n");
        }
    }

    static void createBoard(int rows, int cols) {
        gameboard = new int [rows] [cols];
    }

    static int winOrTie() {
       if (gameboard [0][0] == NOUGHT && gameboard [0][-1])
           return NOUGHT;
    } else if (gameboard [0][0] == && CROSS) [0][1]  {
           return CROSS;
    } else if (gameboard [0][0]== && " "()) [0][0] {    
           return 0;
    } else {
           return false;                
    }


    /**
     * @param args the command line arguments
     */    /**
     * @param args the command line arguments
     */

    public static void main(String[] args)  {
        createBoard(3,3);
        int turn = 0;
        int playerVal;
        int outcome;
        java.util.Scanner scan = new
            java.util.Scanner(System.in);
        do {
            displayBoard();
            playerVal = (turn % 2 == 0)? NOUGHT : CROSS;
            if (playerVal == NOUGHT) {
                System.out.println ("\n-0's turn-");
            } else {
                System.out.println("\n-X's turn-");
                }
            System.out.print("Enter row and Column:");
            try {
                set(playerVal, scan.nextInt());
            } catch (IllegalArgumentException ex)
            {System.err.println(ex);}
            turn ++;
            outcome = winOrTie();
        } while ( outcome == -2 );
        displayBoard();
        switch (outcome) {
            case NOUGHT:
                System.out.println("0 wins!");
                break;
            case CROSS:
                System.out.println("X wins!");
                break;
            case 0:
                System.out.println("Tie.");
                break;
            }
     }

}

共 (1) 个答案

  1. # 1 楼答案

    评论中提到了其中一些,但这些条件根本没有意义:

    if (gameboard [0][0] == NOUGHT && gameboard [0][-1])
           return NOUGHT;
    } else if (gameboard [0][0] == && CROSS) [0][1]  {
           return CROSS;
    } else if (gameboard [0][0]== && " "()) [0][0] {    
           return 0;
    

    例如,你认为if (gameboard [0][0] == && CROSS) [0][1]应该做什么?" "()到底应该是什么?你认为== &&有什么作用?很难确切地知道你到底想在这里实现什么

    也可以考虑^ {CD4}}。这里有两个问题。首先,您确实意识到-1在Java中实际上不是一个有效的数组索引,对吗?(这在Python中是允许的,但在Java中是不允许的)。而且,gameboard [0][-1]是一个整数,不是布尔,所以&& gameboard [0][-1]没有意义。如果您有类似A && B的东西,那么AB必须计算为某种布尔值(即truefalse

    另外,我鼓励你不要像这里那样做缩进。我建议将“其他如果”放在各自的行中