/
Binom
/
SudokuSolverAlise
Обзор
Документация
Войти
/
Binom
/
SudokuSolverAlise
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
SudokuFileManager.java
63 строки
2 KB
Binom
upload files
01 ноя 2025, 21:10
01 ноя 2025, 21:10
1fe38d0
Код
Авторство
О чём код?
package org.example; import java.io.*; import java.nio.file.Files; import java.nio.file.Paths; import java.util.List; public class SudokuFileManager { /** * Сохраняет доску в файл * @param board Доска для сохранения * @param filePath Путь к файлу * @throws IOException При ошибках записи */ public static void saveBoard(SudokuBoard board, String filePath) throws IOException { try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) { Cell[][] grid = board.getBoard(); for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { writer.write(String.valueOf(grid[i][j].getValue())); } writer.newLine(); } } } /** * Загружает доску из файла * @param filePath Путь к файлу * @return Загруженная доска * @throws IOException При ошибках чтения */ public static SudokuBoard loadBoard(String filePath) throws IOException { SudokuBoard board = new SudokuBoard(); Cell[][] grid = board.getBoard(); List<String> lines = Files.readAllLines(Paths.get(filePath)); if (lines.size() != 9) { throw new IllegalArgumentException("Файл должен содержать 9 строк"); } for (int i = 0; i < 9; i++) { String line = lines.get(i); if (line.length() != 9) { throw new IllegalArgumentException("Каждая строка должна содержать 9 символов"); } for (int j = 0; j < 9; j++) { char c = line.charAt(j); if (c >= '0' && c <= '9') { grid[i][j].setValue(Character.getNumericValue(c)); // Фиксируем изначально заданные ячейки if (c != '0') { grid[i][j].setFixed(true); } } else { throw new IllegalArgumentException("Недопустимый символ: " + c); } } } return board; } }