Java lang arrayindexoutofbounds
Я все еще пытаюсь разобраться в 2d-массивах и столкнулся с проблемой, которую, похоже, не могу найти. это игра с доской, и вы должны перейти от А К Б, чтобы закончить ее. Всякий раз, когда я пытаюсь двигаться вниз, программа выдает исключение ArrayIndexOutOfFounds.
Это мой 2d массив
char[][] gameBoard = { {'#','-','#','-','#','-','#','-','#','-','#','-','#','-','#','-','#','-','#'}, {'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}, {'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}, {'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}, {'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}, {'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}, {'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}, {'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}, {'#',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','#'}, {'#','-','#','-','#','-','#','-','#','-','#','-','#','-','#','-','#','-','#'}, };
я просто решил сначала сделать доску, а потом наполнить ее всякой всячиной.
Это заполняющая часть
public static void fillBoard(char[][] gameBoard) { Random rand = new Random(); int rows = gameBoard.length; int cols = gameBoard[0].length; for(int i = 0; i< rows; i++) { for(int j = 0; j< cols; j++){ int position = rand.nextInt(3); if(i == 0) { gameBoard[i][j] = '#'; } if(j == 0) { gameBoard[i][j] = '#'; } if(i == 9) { gameBoard[i][j] = '#'; } if(j == 18){ gameBoard[i][j] = '#'; } if(position == 2 && gameBoard[i][j] == ' ') { gameBoard[i][j] = 'X'; } } }
и это метод перемещения вниз. Я в значительной степени нищий, так что я думаю, что решение находится передо мной, но я не могу его найти :D
public static void moveDown(char[][] gameBoard) { int rows = gameBoard.length; int cols = gameBoard[0].length; for(int i = 1; i< rows; i++) { for(int j = 1; j< cols; j++){ if(gameBoard[i][j] == 'W'){ if(gameBoard[i+1][j] != 'X' && gameBoard[i+j][j] != '#'){ gameBoard[i][j] = ' '; gameBoard[i+1][j] = 'W'; }else System.out.println("Miscare invalida."); } } } printBoard(gameBoard); }
Что я уже пробовал:
Код такой же, как и в других методах, и работает нормально.