Задать вопрос
evgeniy8705
@evgeniy8705
Повелитель вселенной

Почему текст выводится 2 раза?

Есть такой небольшой пример кода:
public class App {
    public static void main(String[] args)  throws java.io.IOException {
        char ch, answer = 'S';

        System.out.println("Задумана буква из диапозона A-Z.");

        while (true) {
            System.out.print("Попытайтесь ее угадать: ");

            ch = (char) System.in.read();

            if (ch == answer) {
                System.out.println("** Правильно! **");
                break;
            }
        }
    }
}


Почему при неправильном вводе, в консоль выводится "Попытайтесь ее угадать: Попытайтесь ее угадать: "??
Почему 2 раза?

Вывод: Ссылка на большой размер
fe93f32e050541a3acced13352cd2e2c.png
  • Вопрос задан
  • 1149 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
z17
@z17
Java, PHP
В таких случаях нужно запускать дебаггер.

А так потому что ты вводишь 2 символа, а не один. Какую-то букву и символ переноса строки.
Ответ написан
@gr8web
А что должно выводить? :)
Зашел в цикл, вывел строку, считал чар.
Если чар не тот, то снова вывод строки и считывание чара, иначе иф и выход из цикла.
Ответ написан
@MoonMaster
Программист и этим все сказано
Потому что у вас так цикл работает. Когда цикл только запускается while (true) то выводится соответствующее сообщение. Потом вы запрашиваете символ. Если он некорректен, то вы выводите сообщение, но из цикла вы не выходите. Вы только выходите из секции if.
Ответ написан
@brucebanner
При ложном условии if`а цикл повторяется
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы