Сначала я отвечу на ваш вопрос, но затем предложу, как мне кажется, лучший способ выполнить то, что вы делаете.
Если вы поместите свой Reader в BufferedReader, вы можете отметить точку, гдеПолучите следующий символ и сбросьте его, чтобы вернуться к предыдущему символу, чтобы на следующей итерации вы снова прочитали этот символ:
BufferedReader br = new BufferedReader(reader);
br.mark(1);
int firstByte = br.read();
br.reset();
Другой способ выполнить это и избежать необходимости искатьвперед - добавить каждый символ в StringBuilder.Затем, когда вам нужен полный номер, потому что вы нажали не цифру, у вас есть весь номер в StringBuilder.Если вы повторно используете тот же StringBuilder и просто очищаете его при необходимости, это должно быть эффективным.