В коде я предлагаю вам остановить поток сканера с помощью некоторого стоп-слова, в этом примере используется empty string
~ ""
Нет необходимости разбирать строковое значение на целое число для каждой итерации.
После прочтения я делаю следующие шаги.
Сначала код заменяет все пробелы между числами в соответствии с вашим примером.
Во-вторых, фильтрует ваши входные значения с помощью регулярного выражения.
В-третьих, тогда у нас есть только числа, и мы должны без проблем преобразовать их в целочисленные значения.
Последний шаг - это сводка, она подсчитывает сумму ваших входных данных и результата печати.
public static void main(String[] args) {
ArrayList<String> arrays = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
String bufferLine;
while (scanner.hasNextLine() && !Objects.equals(bufferLine = scanner.nextLine(), "")) {
arrays.add(bufferLine);
}
int sum = arrays.stream()
.map(s -> s.replace(" ",""))
.filter(s -> s.matches("\\d+"))
.mapToInt(Integer::valueOf)
.sum();
System.out.println(sum);
}