Java - чтение из ввода std, по одному символу за раз - PullRequest
2 голосов
/ 23 июня 2010

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

Однако есть несколько уловов. Вход должен считываться со стандартного входа, поскольку используется перенаправление ввода.

Кроме того, мне нужно иметь возможность определять как пару символов CR / LF, чтобы определить конец строки, так и EOF, чтобы определить конец файла.

Какой лучший способ сделать это? Я слонялся вокруг и обнаружил, что у Scanner нет класса .nextChar (который работал бы отлично).

Ответы [ 3 ]

1 голос
/ 23 июня 2010

Что-то не так с просто System.in.read ()? Он возвращает один int (просто приведите его к char) и -1 для EOF.

0 голосов
/ 23 июня 2010

Вы можете использовать метод read класса FileReader (который он наследует от класса InputStreamReader ). Это будет читать один символ за раз и возвращать -1, когда достигнут конец файла / потока.

0 голосов
/ 23 июня 2010

Сканер не имеет класса nextChar, потому что он не сможет определить, что это значит. Пробел - это символы; Вы должны пропустить их или прочитать их?

Если вам нужна семантика сканера, почему бы не использовать сканер для чтения всей строки (используя nextLine), а затем выполнить итерацию по символам строки? Если вам не нужен внутрипропускной пробел, просто удалите его или проигнорируйте.

...