为什么我的阵列超出范围?

时间:2015-10-17 20:52:02

标签: java arrays conways-game-of-life

我正在尝试访问数组的下一个元素,但它说我已经超出界限了。

private void board(Scanner file) {
    String[][] board = new String[r][c]; //r=25 c=75
    int col = 0;
    for(int row = 0; file.hasNextLine() && row<r ; row++){
        board[row]=file.nextLine().split("");
        neighbors(board,row,col);
        col++;
        System.out.println(file.next());
    }

}

private void neighbors(String[][] board, int row, int col) {
    if(col<c && "X".equals(board[row][col+1])){//right
        neighbors++;
        System.out.println(neighbors);
    }

}

2 个答案:

答案 0 :(得分:0)

在第if(col<c && "X".equals(board[row][col+1])){行中,首先确保col小于数组中的列数,但是您尝试在col+1处取消引用数组。如果col已经c-1,则col+1是无效的数组索引,这将导致ArrayIndexOutOfBoundsException被抛出。

答案 1 :(得分:0)

board[row]=file.nextLine().split(""); 此行将生成任意长度的新数组,具体取决于file.nextLine()split()&#34;返回的行数。所以board[row]现在引用数组,其长度可能不等于c,我认为你的split("")将返回大小为1的数组

所以不要比较col < c使用col < board[row].length ; 如果该行是1 2 3,也会重新考虑您的split("") 你可以使用split(" ");