Данный код был взят с книги Шилдта, стр122. Вопрос про выделенный блок кода где "Отбрасывается все остальные символы во входном буфере". В книге написано "В рассматриваемом здесь цикле эти символы отбрасываются до тех пор, пока не достигается конец строки. Если не сделать этого, лишние символы будут передаваться программе в качестве выбранной буквы, что не соответствует действительности.". Каким образом повторное чтение с клавиатуры ignore отбрасывает лишние символы? и почему в условии указано не равно переводу строки ? Такой момент в джавараше присутствует? статья какая нибудь?
public static void main(String[] args) throws IOException {
char ch, ignore, answer = 'k';
do {
System.out.println("Задумана буква из диапазона a-z.");
System.out.print("Попытайтесь ее угадать: ");
ch = (char) System.in.read();
do {
ignore = (char) System.in.read();
} while (ignore != '\n');
if(ch == answer) System.out.println("**Правильно!**");
else {
System.out.print("...Извините, нужная буква находится ");
if(ch < answer) System.out.println("ближе к концу алфавита");
else System.out.println("ближе к началу алфавита");
System.out.println("Повторите попытку!");
}
} while (answer != ch);
}
}
Anton Petrov
1 уровень
Отбрасывание лишних символов
Обсуждается
Комментарии (1)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Regina Software Developer Expert
17 июня 2020, 01:46
ну вы читаете сиволы в цикле ничего с ними не делая, вот и получается игнорирование.
в конце строки будет перевод на новую, и видимо там уже есть что то что будет нужно поэтому как только достигнут "\n" игнорирование прекращается
0