public class javart {
public static void main(String[]args)
throws java.io.IOException {
char ch, ignore, answer = 'S';
do {
System.out.println("Зaдyмaнa буква из диапазона A-Z.");
System.out.print("Пoпытaйтecь ее угадать: ");
// Получить символ с клавиатуры
ch = (char) System.in.read();
// Отбросить все остальные символы во входном буфере
do {
ignore = (char) System.in.read();
} while(ignore != '\n');
if(ch == answer) System.out.println("** Правильно! **");
else {
System.out.print(" ... Извинитe, нужная буква находится ");
if(ch < answer)
System.out.println("ближe к концу алфавита");
else System.out.println("ближe к началу алфавита");
System.out.println("Пoвтopитe попытку!\n");}
}while(answer != ch);
}
}
do {
ignore = (char) System.in.read();
} while(ignore != '\n');
Я знаю что он пропускает запись в буфер и тем самым избегает повторного вывода условий, но почему так?
Почему он их пропускает, а не является "бессмысленным"? Я понимаю эту логику так, берем значение ввода клавиатуры до того момента, пока не будет перенос строки, потом продолжаем выполнять основной цикл. И по идее этот цикл просто "бесполезный" Поясните пожалуйста.