我正在尝试访问数组的下一个元素,但它说我已经超出界限了。
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);
}
}
答案 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(" ");