TicTacToe数组超出范围

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

[嘿,我正在制作一个TicTacToe游戏,在该游戏中,它检查每个索引的值是“ x”还是“ o”,并且它一直给我第一个if语句错误java.lang.ArrayIndexOutOfBoundsException:3。任何暗示为什么会这样的帮助?

public boolean checkRowsForWin(int usrBrd, int WinSeq) {
    int countX = 0;
    int countO = 0;

    for(int i = 0; i < usrBrd; i++) {
        for(int j = 0; i< usrBrd; j++) {
            if(board[i][j] == 'x') {
                countX++;
            }
            else if(board[i][j] == 'o') {
                countO++;
            }
            else {
                countX = 0;
                countO = 0;
            }
            if (countX >= WinSeq) {
                return true;
            }
            else if (countO >= WinSeq) {
                return true;
            }
        }
    }
    return false;
}

这里是我初始化板子的地方

    Scanner scnr = new Scanner (System.in);

    System.out.println("Tic-Tac-Toe!");
    System.out.println("How large would you like the board?(Must be greater 
    than 3)");
    int usrBrd = scnr.nextInt();
    if(usrBrd < 3) {
        System.out.println("Not a valid number, please try again");
        usrBrd = scnr.nextInt();
    }
    TicTacToe game = new TicTacToe(usrBrd);
    game.initializeBoard(usrBrd);
    System.out.println("What should the win sequence be? Write in form of 
    amount i.e \"3\"  ");
    int winSeq = scnr.nextInt();

这是初始化电路板的方法

public TicTacToe(int usrBrd) {
    board = new char[usrBrd][usrBrd];
    currentPlayerMark = 'x';
    initializeBoard(usrBrd);
}
public void initializeBoard(int usrBrd) {
    //loop rows
    for (int i = 0; i < usrBrd; i++) {
        //loop columns
        for(int j = 0; j < usrBrd; j++) {
            board[i][j] = '-';
        }
    }
}
java arrays tic-tac-toe
1个回答
2
投票

您的错误是您的第二个for循环

for(int j = 0; i< usrBrd; j++)

您总是检查i

© www.soinside.com 2019 - 2024. All rights reserved.