Мне нужно прочитать файл с магическим квадратом в формате:
#
# # #
# # #
# # #
где первая строка представляет размер квадрата и создает двумерный массив со значениями файла.
Я настроил свой метод readMatrix для чтения по строкам, создал двумерный массив правильного размера и ввел каждое значение в правильную позицию.
private int[][] readMatrix(String fileName) throws
FileNotFoundException {
int n;
File file = new File(fileName);
Scanner fileScan = new Scanner(file);
String line = fileScan.nextLine();
Scanner lineScan = new Scanner(line);
n = lineScan.nextInt();
square = new int[n][n];
while (fileScan.hasNextLine()) {
line = fileScan.nextLine();
while (lineScan.hasNext()) {
for (int i = 0; i < n; i++) {
lineScan = new Scanner(line);
for (int j = 0; j < n; j++) {
square[i][j] = lineScan.nextInt();
}
}
}
}
fileScan.close();
lineScan.close();
return square;
public int[][] getMatrix() {
int[][] copy;
int n = square.length;
copy = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
copy[i][j] = square[i][j];
}
}
return copy;
Однако тестер для этой программы отображает магический квадрат правильных размеров, но со всеми значениями, равными 0, и не работает метод getMatrix (я предполагаю, потому что возвращенный квадрат не соответствует квадрату файла). Я попытался переместить объекты сканера вокруг (внутри / снаружи) циклов for / while в readMatrix и попытался использовать parseInt / scan next вместо nextInt, но безуспешно. Я в тупике.