Почему программа срабатывает именно так?

Учусь java по книге Шилдта - в книге приведен программка-пример

public class HelloWorld {
public static void main(String[] args)
        throws java.io.IOException {

    int i;
    System.out.println("Для остановки нажмите клавишу s");

    for (i = 0; (char) System.in.read() != 's';
    i++)
    System.out.println("Введите верную букву");

}

}

Программа просит в консоли ввести букву "s". Если вводишь s то она завершает работу, а если вводишь неверную букву то в консоли 2 раза выводится надпись "Введите верную букву Введите верную букву"

Вот и вопрос - а почему она 2 раза выводится?, а не один или не бесконечно, так как инкремент то неограничен каким-либо условием типа i<5? И значение i меняю на любое другое и программа все равно работает. Почему - я не понимаю?

Буду благодарен если популярно по шагам объясните что и как тут работает?


Ответы (1 шт):

Автор решения: Никита Плохотнюк

это связано с тем , что программа читает по символьно. То есть 1 раз она читает введенный символ а потом просит его ввести. Если ввести 4 символа то 5 раз будет обрабатываться цикл for.Таким образом он будет высвечивать при вводе n числа символов, будет высвечиваться n+1 строк. Так как цикл будет читать каждый новый символ в новом "круге" цикла.

→ Ссылка