Когда вы читаете System.in, вы читаете с клавиатуры по умолчанию, и это бесконечный поток ввода ... он имеет столько строк, сколько пользователь должен печатать. Я думаю, что отправка управляющей последовательности для EOF может работать, например, CTL-Z (или это CTL-D?).
Глядя на мою диаграмму AOL AOLII ... CTL-C ETX и CTL-D - EOT; любой из них должен работать, чтобы прервать текстовый поток. CTL-Z является SUB, который не должен работать (но он может, поскольку элементы управления исторически интерпретируются очень субъективно).