Прочитав ваши комментарии, я понял, что речь идет не только о печати массива, который вас беспокоит; скорее, вы обеспокоены тем, как вы сможете получить к нему доступ позже. Решение проблемы неправильной печати уже было предоставлено в комментариях, т.е. замена System.out.print(Arrays.deepToString(board));
на System.out.print("X");
. Я объясняю здесь другую часть (то есть, как получить к ней доступ позже), а также некоторую дополнительную информацию, которая поможет вам в разработке вашего приложения.
- Когда вы передаете и изменяете массив каким-либо методом, Массив также будет изменен для вызывающего метода (отметьте this , чтобы узнать больше об этом). Это означает, что когда
board[][]
будет изменено в fillBoard
, вы получите измененное board[][]
в main
. - Согласно принципу единственной ответственности , модуль / Метод
fillBoard
должен делать только одну вещь - заполнение доски. Не следует также делать печать (дополнительная вещь). Вы должны написать другой метод для печати.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String[][] board = new String[7][7];
fillBoard(board);
displayBoard(board);
}
static void fillBoard(String[][] board) {
for (String[] row : board) {
Arrays.fill(row, "X");
}
}
static void displayBoard(String[][] board) {
for (String[] row : board) {
for (String cell : row) {
System.out.print(cell);
}
System.out.println();
}
}
}
Вывод:
XXXXXXX
XXXXXXX
XXXXXXX
XXXXXXX
XXXXXXX
XXXXXXX
XXXXXXX
Дополнительные примечания:
2-D массив - это массив 1-D-массивов, и поэтому есть много способов, которыми вы можете написать приведенный выше код, например,
static void fillBoard(String[][] board) {
for (int i = 0; i < board.length; i++) {
Arrays.fill(board[i], "X");
}
}
или использование расширенного for
l oop:
static void fillBoard(String[][] board) {
for (String[] row : board) {
Arrays.fill(row, "X");
}
}
или без использования Arrays.fill
:
static void fillBoard(String[][] board) {
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[i].length; j++) {
board[i][j] = "X";
}
}
}
Аналогично, метод, displayBoard
можно записать в виде:
static void displayBoard(String[][] board) {
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[i].length; j++) {
System.out.print(board[i][j]);
}
System.out.println();
}
}
Примечание , которое я использовал board.length
и board[i].length
вместо 7
для количества строк и 7
для количество столбцов, чтобы вам не приходилось менять его каждый раз при изменении размера массива.