Почему строка "Введите букву" выводится 2 раза?
public class Main {
public static void main(String[] args) throws IOException {
char ch;
do {
System.out.println("Введите букву");
ch = (char) System.in.read();
} while (ch != 'q');
}
}
Ответы (1 шт):
Автор решения: Sergey Zh.
→ Ссылка
Я использовал режим отладки (дебага), чтобы в этом разораться.
Оказывается, когда вы вводите символ (например 'k') и нажимаете клавишу Enter, через поток System.in вводится 2 символа!
Первый - тот который вы ввели (например 'k'), а второй - невидимый символ перевода строки ('\n') из-за клавиши Enter. Соответственно мы 2 раза проходимся по циклу (так как в input потоке считались 2 символа).
И совершенно не имеет значения использовать ли цикл с постусловием do-while или с предусловием while.
