Я пытаюсь прочитать отдельные номера из файла с несколькими строками чисел, разделенных запятыми. Явский код, с которым я делаю это:
try {
Scanner fileScanner = new Scanner(new FileReader(unsolvedBoardLocation));
Pattern myPattern = Pattern.compile("[,\\r\\n]");
System.out.println(myPattern.pattern());
fileScanner.useDelimiter(myPattern);
while(fileScanner.hasNext()) {
int i = fileScanner.nextInt();
System.out.print(i);
}
}
catch(IOException ex) {
Logger.getLogger(SudokuBoard.class.getName()).log(Level.SEVERE, null, ex);
}
Содержимое файла, который я читаю, не имеет пробелов и выглядит следующим образом:
8,0,0,9,3,0,0,0,2
0,0,9,0,0,0,0,4,0
Поскольку я создал текстовый файл в Windows, я знаю, что после 2. в моей исходной версии программы сканер возвращал 2 \ r \ n, поэтому я добавил \ r \ n в разделитель, чтобы попытаться предотвратить это, но у меня все еще есть проблемы. Я получаю InputMissmatchException. Полная трассировка стека:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at my.puzzle.sudoku.SudokuBoard.<init>(SudokuBoard.java:31)
at my.puzzle.sudoku.Sudoku.main(Sudoku.java:8)
Java Result: 1
Я думаю, что причина, по которой я получаю это исключение, заключается в том, что сканер возвращает "" после конца 2. Это не то, что ожидает nextInt (), что выдает ошибку. Я пытаюсь предотвратить это, но я не уверен, как это сделать с помощью регулярных выражений. Так как я генерирую входной файл, я мог бы просто отформатировать его с пробелами и заставить его работать. Я также мог бы прочитать каждый токен как строку и проверить, можно ли прочитать строку как допустимое число, и перейти к следующему токену, если нет; однако для моих собственных целей обучения я хотел бы знать, как это можно сделать только с помощью регулярных выражений. Я уже читал Java-учебник по регулярным выражениям, но я никогда раньше не использовал регулярные выражения и испытываю трудности.
Для ясности, мой вопрос таков: "Как я могу предотвратить регулярное выражение в возвращении строки нулевой длины в этом сценарии".
Буду признателен за любую помощь, которую я смогу получить. Заранее спасибо!