Я занимался проблемой программирования на одном из веб-сайтов, посвященных онлайн-программированию. Инструкции заключались в том, что он должен продолжать получать пользовательский ввод (Not from File), в то время как у пользователя есть ввод для ввода. Код более или менее был следующим:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (input.hasNext()){
my_input = input.nextLine();
*Does some implementation*
}
}
Внутри цикла while не было условий или разрывов, которые позволили бы ему выйти. Если это было выполнено вручную, всегда будет следующий вход. Как это, когда я отправляю свой код, система, которая оценивает мой код, может выйти из цикла while. Я думал, что это застрянет в бесконечном цикле, потому что вы всегда можете добавить другой вход.
Если вы перенаправите стандартный ввод для чтения из файла, цикл завершится, когда сканер достигнет конца файла.
Когда программа читает с консоли, вы можете вручную указать конец входного потока, нажав Ctrl - D в Unix (включая OSX) или Ctrl - Z, а затем Enter в Windows,
System.in
происходит из файла: sc.tamu.edu/help/general/unix/redirection.html