Это означает канонический вопрос/ответ, который может использоваться как дублировать цель. Эти требования основаны на наиболее распространенных вопросы, которые публикуются каждый день и могут быть добавлены по мере необходимости. Все они требуется одна и та же базовая структура кода для доступа к каждому из сценариев и они обычно зависят друг от друга.
Общие вопросы о сканировании:
Большинство вопросов Scanner
включают неудачные попытки более чем одной из этих вещей.
-
Я хочу, чтобы моя программа автоматически дождалась следующего ввода после каждого предыдущего ввода.
-
Я хочу знать, как обнаружить команду exit и завершить мою программу, когда эта команда будет введена.
-
Я хочу знать, как сопоставлять несколько команд для команды exit в режиме без учета регистра.
-
Я хочу иметь возможность сопоставлять шаблоны регулярных выражений, а также встроенные примитивы. Например, как совместить то, что кажется датой (
2014/10/18
)? -
Я хочу знать, как сопоставить вещи, которые могут быть легко реализованы с помощью регулярного выражения - например, URL (
http://google.com
).
Мотивация:
В мире Java Scanner
- это особый случай, это чрезвычайно сложный класс, который преподаватели не должны давать новым инструкциям для студентов. В большинстве случаев инструкторы даже не знают, как правильно их использовать. Это вряд ли когда-либо используется в профессиональном кодексе производства, поэтому его ценность для студентов чрезвычайно сомнительна.
Использование Scanner
подразумевает все другие вещи, которые упоминаются в этом вопросе и ответе. Дело не только в Scanner
о том, как решить эти общие проблемы с Scanner
, которые всегда являются сопутствующими проблемами практически во всем вопросе, который вызывает Scanner
неправильно. Это никогда не меньше next()
vs nextLine()
, что является лишь симптомом фиктивности реализации класса, всегда есть другие проблемы в коде размещение в вопросах, касающихся Scanner
.
Ответ показывает полную, идиоматическую реализацию 99% случаев, когда Scanner
используется и задается вопросом о StackOverflow.
Особенно в коде для начинающих. Если вы считаете, что этот ответ слишком сложный, то жалуйтесь на инструкторов, которые рассказывают новым ученикам использовать Scanner
, прежде чем объяснять тонкости, причуды и особенности его поведения.
Scanner
- отличный момент обучения тому, насколько важно Принцип наименьшего удивления и почему последовательное поведение и семантика важны в методов именования методов.
Примечание для учащихся:
Вероятно, вы никогда не увидите
Scanner
, используемого в профессиональная/коммерческая линейка бизнес-приложений, потому что все это делает что-то еще лучше. Программное обеспечение реального мира должно быть более устойчивый и поддерживаемый, чемScanner
позволяет писать код. Программное обеспечение реального мира использует стандартизированные синтаксические анализаторы файлов и документированные форматы файлов, а не входные форматы adhoc, которые вы заданные в автономных заданиях.