в моем последнем проекте для вводного курса программирования, и у меня возникает небольшая проблема, когда я пытаюсь распечатать / изменить / получить доступ к элементам в 2D-массиве. Короче говоря, я создаю игру connect four, и мне были даны несколько полных и несколько неполных классов для создания игры.
Один из методов в классе столбца (который содержит второй массив значений char, также называемый столбцом), называется get, а код выглядит следующим образом:
public char get(int row) {
row = height;
if(row < 7 && row > 0) {
System.out.println(column[row]);
return column[row];
} else {
char invalid = ' ';
return invalid;
}
}
В настоящее время игра запрашивает у пользователя имя для присвоения классу Player, а затем отображает game перед тем, как также предложить пользователю ввести номер столбца, чтобы добавить свой жетон (X) на доску, автоматически добавив его в конец столбца. Код для метода makeMove:
public boolean makeMove(int column, char token) {
boolean success = false;
char columnConverter = (char)column;
if(column > 7 && column < 1) {
System.out.println("Sorry, that's not a valid column!");
success = false;
} else {
board[column].put(token);
System.out.println(board[column].put(token));
success = true;
}
return success;
}
И код для фактического размещения токена:
public boolean put(char token) {
if (height <= MAX_HEIGHT) {
column[height] = token;
height++;
return true;
} else {
return false;
}
}
Когда я вызываю метод отображения для игры, вывод (и код вверху) выглядит следующим образом:
public void display() {
System.out.println("1 2 3 4 5 6 7");
for(int i = 0; i < board.length; i++) {
for(int j = 0; j < NUM_ROWS; j++)
System.out.println("[" + board[i].get(j) + "]");
}
System.out.println("1 2 3 4 5 6 7");
}
ВЫХОД:
Welcome to Nibble Nabble! What's your name?
Alex
1 2 3 4 5 6 7
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
1 2 3 4 5 6 7
Alex > 0
true
Из-за этого я почти уверен, что проблема связана с методом get, но я полностью потерялся что нужно исправить. Я также получаю исключение ArrayIndexOutOfBoundsException, если ввожу любое значение выше 0 для пользовательской подсказки.