Ваша проблема лежит здесь. Вы только устанавливаете размер массивов равным 1,1 this.row = 1;this.cols = 1;Вам нужно определить размер массивов.
Я быстро скомбинировал это. Это будет работать для ваших нужд.
public static void main(String[] args) throws FileNotFoundException {
BufferedReader input = new BufferedReader(new FileReader("test.txt"));
//get list of all the lines in file as char[]'s
List<char[]> chars = input.lines().map(String::toCharArray).collect(Collectors.toList());
//Find the longest line to bound 2d array
int columns= chars
.stream()
.max(Comparator.comparing(array -> array.length))
.get()
.length;
//get number of lines to bound 2d array
int rows = chars.size();
char[][] grid = new char[rows][columns];
int i = 0;
for (char[] array : chars) {
int j = 0;
for (char c : array) {
grid[i][j] = c;
j++;
}
i++;
}
// for (int a = 0; a < size; a++) {
// for (int b = 0; b < max; b++) {
// System.out.print(grid[a][b]);
// }
// System.out.println();
// }
}
Вы также можете просто использовать Коллекции (Список <>), чтобы не беспокоиться об установке границ массива. Вы можете просто вернуть список из вызова
List<char[]> chars = input.lines().map(String::toCharArray).collect(Collectors.toList());
и распечатать свою сетку, пройдя по ней, вместо преобразования в двумерный массив.