https://www.tutorialspoint.com/java/io/bufferedreader_read_char.htm
Read wczytuje jeden znak z wejścia. Musiałbyś napisać != -1 zgodnie z dokumentacją.
Masz takie opcje
1.Scanner i metoda scanner.hasNext() + nextInt() do odczytu, ale to będzie dość wolne:
if (scanner.hasNextInt()) {
System.out.println(scanner.nextInt());
}
2.Użycie readLine() + split + parsowane. Czyli jak w moim pierwszym przykładzie i
String[] splited = s.split("\\s+");
// iterowanie po tablicy splited i konwersja elementów na int
3.Użycie read() i napisanie włąsnego parsera, dla wejścia wczytanego znak po znaku