Как автоматические маркеры выходят из hasNext в сканерах

1

Я занимался проблемой программирования на одном из веб-сайтов, посвященных онлайн-программированию. Инструкции заключались в том, что он должен продолжать получать пользовательский ввод (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. Я думал, что это застрянет в бесконечном цикле, потому что вы всегда можете добавить другой вход.

Теги:
while-loop
java.util.scanner

1 ответ

1
Лучший ответ

Если вы перенаправите стандартный ввод для чтения из файла, цикл завершится, когда сканер достигнет конца файла.

Когда программа читает с консоли, вы можете вручную указать конец входного потока, нажав Ctrl - D в Unix (включая OSX) или Ctrl - Z, а затем Enter в Windows,

  • 0
    Да, но я не говорю о файле. Если бы это был файл, я бы понял, что при проверке .hasNext () он оценивается как ложный. Я имею в виду System.in.
  • 2
    @ashimashi: И я говорю о перенаправлении, где System.in происходит из файла: sc.tamu.edu/help/general/unix/redirection.html
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню