Когда дело доходит до интерпретации форматированных данных, я всегда хотел бы использовать регулярное выражение:
String line;
StringBuilder builder = new StringBuilder();
while ((line = objReader.readLine()) != null) {
builder.append("\n" + line);
}
objReader.close();
List<Integer> numbers = new ArrayList<Integer>();
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(builder.toString());
while (m.find()) {
numbers.add(Integer.parseInt(m.group()));
}
numbers.stream().forEach(System.out::println);
Если вы хотите, чтобы числа были сгруппированы по строке, попробуйте следующее:
String line;
List<List<Integer>> numbers = new ArrayList<List<Integer>>();
while ((line = objReader.readLine()) != null) {
Pattern p = Pattern.compile("\\d+");
Matcher m = p.matcher(line);
List<Integer> nums = new ArrayList<Integer>();
while (m.find()) {
nums.add(Integer.parseInt(m.group()));
}
numbers.add(nums);
}
objReader.close();
numbers.stream().flatMap(List::stream).forEach(System.out::println);
Вывод:
6
7
8
9
1
4
4
9
11
8
9
6
5
2
Хотя я должен признать, что решение Scary Wombat намного короче и чище.