Ваш код выглядит немного не так - вы разбираете эти числа в переменные типа int r
и c
, но затем делаете int[][] input = new int[rows][cols];
. У вас нет таких переменных, как rows
и cols
.
Также вам не следует начинать с 0 в цикле, поскольку значения tokens[0]
и tokens[1]
предназначены для количества строк и столбцов.
Начинайте цикл с 2 или заканчивайте его tokens.length-2
и добавляйте 2 каждый раз, когда вы берете значение из tokens
внутри цикла.
Для вычисления индекса строки и столбца вам необходимовозьмите i
(например, индекс в массиве tokens
), отрегулируйте вышеупомянутое смещение 2, разделите пол по столбцам, чтобы получить номер строки, и получите остаток от деления по столбцу, чтобы получить номер строки.
Например
for(int i = 2 ; i < tokens.length; i++) {
int value = Integer.parseInt(tokens[i]);
int idx = i-2;
int row = Math.floorDiv(idx, c);
int col = idx % c;
grid[row][col] = value;
}