2012-04-17 2 views
-2

Когда я пытаюсь использовать scanner.hasNextLine() в своей программе, он просто сидит и висит. Мне интересно, есть ли способ решить эту проблему или какие-либо альтернативы, которые я могу использовать. EDIT: причина в том, что я могу удалить все из сканера (сканер будет иметь только одну строку). Поэтому, если есть способ удалить все из сканера, это будет проще.Почему сканер.hasNextLine() висит?

+1

Как вы строите сканер? Каков ваш источник входного сигнала? –

+5

вам нужно ввести код здесь. –

+1

Зачем вам все нужно удалить? scanner.close()? –

ответ

5

Ответит ли это на ваш вопрос? StackOverFlow : why-does-hasnextline-never-end

Если нет, пожалуйста, разместите образец своего кода здесь, чтобы получить более подробный ответ о том, какова ваша проблема. Скорее всего, вы читаете то, что никогда не заканчивается. Если у вас есть файл или строка, у вас не должно быть проблемы, но если вы читаете постоянный поток данных, он может потенциально зависать в зависимости от того, как написан ваш код и что вы читаете в сканере.

1

Посмотрите на апи для java.util.scanner (как я предполагаю, что это класс, который вы используете

http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

Обратите внимание на hasNextLine документ:.

Возвращает истину, если есть еще одна линия на входе от этого сканера Этот метод может блокироваться при ожидании ввода. Сканер не продвигается мимо каких-либо входных сигналов.

(emp hasis mine)

Итак, если у вас есть открытый поток, который не закрыт, он будет блокироваться до появления другой строки или поток будет закрыт.

+0

Спасибо, что рассказала мне что-то, что я знаю ... Так как я могу это исправить? –

+0

Это не сломан. Он работает по назначению. «Исправить» зависит от того, что вы хотите. –

+0

@ShawnShroyer - Вы должны работать над улучшением своих вопросов, прежде чем отвечать на вопросы, чтобы не дать вам именно то, что вы хотите. –

Смежные вопросы