Объясните, в чем различие для ввода данных в консоли Scanner, Console и BufferedReader bReader = new BufferedReader (new InputStreamReader(System.in)); и какой лучше из них использовать?
Ответ
Различие простое Scanner предназначен для разбора любого текста и, ввода с терминала, как частный случай. Он умеет выцеживать числа всякие и т.п. Удобен для простого разбора текстов и для всяких учебных задачек типа "введите число от нуля до трёх". Console нужен для вводы именно с консоли, но иногда это не работает: иногда нет консоли и тогда никак не воспользоваться этой штукой. Консоль не умеет ничего парсить, а только обеспечивать ввод, в том числе безопасный ввод пароля. BufferedReader нужен, чтобы буфферизовать чтение с любого потока. Как частный случай, можно буфферизовать ввод с терминала. Иногда используется ради метода readLine, когда сложно или просто день обрабатывать текст блоками. Для целей чтения текста из стандартного вводы или ручного ввода пользователя вполне пригодный вариант. Но при таком подходе придётся парсить числа вручную, что не слишком большая сложность. Сказать какой использовать вам никто не может. Это зависит от задачи и условий выполнения. Если данные поступают через стандартный ввод, то вероятно следует ожидаать, что Console вас подведёт. Scanner полезен, но он может оказаться слишком полезен и сильно всё затормозить, если данных очень много. Буфферизованный ввод тоже может подсунуть вам бяку, так что в любом случае следует рассматривать источник данных, объём данных и их характер, чтобы принять какое-то решение.
Комментариев нет:
Отправить комментарий