Это означает канонический вопрос/ответ, который может использоваться как дублировать цель. Эти требования основаны на наиболее распространенных вопросы, которые публикуются каждый день и могут быть добавлены по мере необходимости. Все они требуется одна и та же базовая структура кода для доступа к каждому из сценариев и они обычно зависят друг от друга.
Общие вопросы о сканировании:
Большинство вопросов 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, которые вы заданные в автономных заданиях.