Я не понимаю, почему вы пытаетесь получить размер платы по размерам текстовых файлов, если вы можете прямо прочитать его из указанного файла. И то, как вы сейчас пытаетесь это сделать, мне кажется, что в нем есть некоторые ошибки:
col = boardInput.nextLine().split("").length;
Это даст вам, если вы посмотрите на тестовый файл с 9 столбцами, потому что первая строка в вашем тестовом файле: " Тестовый файл »содержит 9 символов, но ширина доски составляет всего 3.
Определение строки, как вы делаете сейчас, также вызовет проблемы, потому что boardInput.hasNextLine()
не изменится, пока вы на самом деле не перейдете на следующую строку, используя boardInput.nextLine()
, так что у вас, по сути, есть бесконечность, тогда как l oop там.
Исправить это на самом деле довольно просто, поскольку файл содержит информацию о столбце и строке:
String name = boardInput.nextLine(); // Store the name of the board so the next line can be processed.
String[] rowAndCol = boardInput.nextLine().split(" "); // Takes the second line and splits it into its two parts.
// Parse the two Strings to integers(Assuming the first number is the row and the second is the column):
int row = Integer.parseInt(rowAndCol[0]);
int col = Integer.parseInt(rowAndCol[1]);
Теперь с что пришло время решить проблему, о которой вы на самом деле спрашивали. Прежде всего вам нужно создать двумерный массив, представляющий вашу доску, а затем заполнить его символами в каждой строке. Заполнить массив на самом деле довольно легко, потому что вы можете преобразовать строку в массив символов с помощью одного вызова функции:
char[][] board = new char[row][];
for(int r = 0; r < row; r++) {
board[r] = boardInput.nextLine().toCharArray();
}
Интересно отметить, что вам даже не нужно знать число столбцов для создания правильного массива (при условии, что файл правильно отформатирован).