Проверьте следующий персонаж по специальности - PullRequest
0 голосов
/ 02 ноября 2011

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

abcde=123;

Как мне сказать программе смотреть вперед и видеть,следующий символ - это другая буква, равно, число и т. д. Теперь, есть ли в этом операторе if возможность сказать «если следующий символ не является буквой, выведите« = TEXT \ n », иначе продолжить»?

Если этот вопрос смущает, мне очень жаль (сейчас 1 час ночи), и я предложу больше информации.Спасибо.

Ответы [ 4 ]

0 голосов
/ 02 ноября 2011

В дополнение к другим ответам у Java также есть класс PushbackInputStream .Иногда это как раз то, что нужно для решения проблем типа lookahead.

0 голосов
/ 02 ноября 2011

Проще говоря, используя метод Character.isLetter(character).Этот метод возвращает true, если аргумент является буквой, и false, если это не так.

A ссылка на документацию по Character

0 голосов
/ 02 ноября 2011

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

Если вы поместите свой Reader в BufferedReader, вы можете отметить точку, гдеПолучите следующий символ и сбросьте его, чтобы вернуться к предыдущему символу, чтобы на следующей итерации вы снова прочитали этот символ:

BufferedReader br = new BufferedReader(reader);
br.mark(1);
int firstByte = br.read();
br.reset();

Другой способ выполнить это и избежать необходимости искатьвперед - добавить каждый символ в StringBuilder.Затем, когда вам нужен полный номер, потому что вы нажали не цифру, у вас есть весь номер в StringBuilder.Если вы повторно используете тот же StringBuilder и просто очищаете его при необходимости, это должно быть эффективным.

0 голосов
/ 02 ноября 2011

Вы можете проверить, не является ли следующий символ НЕ цифрой.Проверьте API персонажа.У него есть метод isDigit ().По сути, если следующий символ НЕ является цифрой, то это либо специальный символ, либо пробел, либо буква.

Надеюсь, это вам немного поможет!

...