Циклы

Java Syntax
4 уровень , 8 лекция
Открыта

Фрагмент лекции JavaRush - университета.


— Привет.

— Привет, Элли!

— Настало… время изучать циклы! Циклы такая же простая штука, как и условия, только интересней. С помощью цикла можно выполнить какую-нибудь команду или блок команд несколько раз. Общий вид цикла такой:

Цикл (пример 1)

while(условие типа boolean)       
    команда;
Цикл (пример 2)

while(условие типа boolean) 
    блок команд в фигурных скобках

— Все очень просто. Команда или блок команд выполняются снова и снова, пока условие цикла истинно – равно true. Сначала проверяется условие, затем выполняется тело цикла (блок команд), затем снова проверяется условие и снова выполняется тело цикла. И так до тех пор, пока условие не станет ложным.

— А если оно всегда истинно или всегда ложно?

— Если оно всегда истинно, программа никогда не прекратит работать и будет всегда выполнять цикл. А если всегда ложно, то тело цикла не выполнится ни разу.

Примеры:

Код на Java Описание
int i = 3;
while (i >= 0)
{
    System.out.println(i);
    i--;    //уменьшение i на 1
}
3
2
1
0
int i = 0;
while (i < 3)
{
    System.out.println(i);
    i++;   //увеличение i на 1
}
0
1
2
boolean isExit = false;
while (!isExit)
{
    String s = buffer.readLine();
    isExit = s.equals("exit");
}
Программа будет вводить строки с клавиатуры, пока не будет введена строка «exit».
while (true) 
    System.out.println("C");
Программа будет вечно печатать на экран букву C.
while (true) 
{
    String s = buffer.readLine();
    if (s.equals("exit")) 
        break;
}
Программа будет вводить строки с клавиатуры, пока не будет введена строка «exit».
4
Задача
Java Syntax Pro, 4 уровень, 8 лекция
Недоступна
Хорошего не бывает много
В этой задаче нужно: 1. Ввести с клавиатуры строку и число number, которое больше 0 и меньше 5. 2. Вывести на экран строку number раз с помощью цикла do-while. Каждое значение нужно вывести с новой строки. Если число number меньше/равно 0 или больше/равно 5, то введенную строку нужно вывести на экр

— Вроде и не сложно. После условий. Уже хочется попробовать.

Комментарии (213)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Cat_Virus Уровень 9
21 декабря 2023
Если в программе из видео написать: int n = 0; while (n < 10) { System.out.println(n++ + " Сделай шаг"); } получиться тот же самый результат с нумерацией шагов от 0 до 9. А если изменить n++ на ++n, то получиться нумерация шагов с 1 до 10. Прикольно:) Вроде как пример на различия в префиксной и постфиксной форме инкремента получился.
Евгений Уровень 47
27 июля 2022
Лектор, который рассказывает про циклы оч крут. Приятно слушать и все доходчиво. Жаль не все видео с этим преподом)
Eugene Уровень 12
12 января 2022
Для того, чтобы было проще понять пример с isExit, можно представить, что вместо строки while (!isExit) мы пишем while true. В начале мы задаем значение переменной isExit = false, поэтому инверсия !isExit это true. Цикл while выполняется только тогда, когда в его скобках выражение принимает значение true, поэтому когда в результате команды isExit=s.equals("exit") isExit станет true, выражение в скобках цикла while (!isExit) примет значение false, и выполнение цикла прекратится.
Деня Уровень 2
31 января 2022
теперь понял, спасибо.
Сергей Уровень 10
18 августа 2022
лучшее объяснение
Uncle Bogdan Уровень 8
19 декабря 2021
Сейчас я вам объясню историю с isExit, которая не понятна многим. Итак, начнем. Цикл while выполняется только тогда, когда в его скобках ввражение принимает значение true. Рассмотрим два примера. 1) while(5 > 3) {...}. В скобках значение выражения - true. Цикл выполнится, причем всегда, тк 5 всегда больше 3. Тепер вариант 2) while(1>7) {...}. В скобках выражение имеет значение - false. Цикл никогда не будет выполнен, тк выражение в скобках - false, а для выполнения нам нужно true. Перейдем к нашей задаче. boolean isExit = false. Объявили переменную и присвоили ей значение false. Запомним это. Переходим к циклу. Помним, чтобы цикл выполнялся в скобках должно быть выражение со значением true. Если выражение isExit имеет значение false, то чтобы получить true мы пишем !isExit, те !false это и будет true. !isExit это true. Отлично в скобках у нас true цикл начал проверку методом equals. Мы ввели , например, строку python. Метод сравнил введенную строку с exit. Результатом выполнения является булевый тип: либо true, либо false. В данном случае строки не совпали и получили результат - false. Мы помним, что изначально, мы присвоили значение isExit - false. По сути, ничего не поменялось для цикла, значение переменной так и осталось false, а значение в скобках !isExit по прежнему - true. Теперь введем exit. Происходит сравнение, теперь цикл выдаст true, тк строки равны. Теперь происходит присваивание переменной isExit значения true. Переходим к циклу while. Там написано !isExit. Тк у переменной теперь новое значение true, то !isExit теперь становится false. А мы помним, что для выполнения цикла, значение в скобках должно быть true. Теперь цикл прекращает свое выполнение, как в примере 2). После внимательного прочтения данного поста, у вас не должно остаться вопросов.
САМОЕ ЛУЧШЕЕ ОБЪЯСНЕНИЕ! ВСЕ ПО ПОЛОЧКАМ РАЗЛОЖИЛ!
Макс Уровень 11
10 ноября 2021
! - это инверсия. !true = false !false = true
Андрей Уровень 6
22 октября 2021
зачем писать boolean isExit = false, если тип boolean и так false?
Egor Kurilko Уровень 7
4 декабря 2021
Ага, грязный код, занимает лишнюю память )
Лера Процько Уровень 14
28 января 2024
здесь мы указываем начальное значение: boolean isExit = false потому что может быть начальное значение true. Тогда мы напишем boolean isExit = true
Игорь Топоров Уровень 14
11 сентября 2021
Скажите люди добрые, что за слова buffer.readLine(); И isExit = s.equals Пришёл после чтения Шилдта повторить циклы, а тут такое!
Михаил Уровень 7
12 сентября 2021
Предположу что buffer это объявленная, за рамками этого фрагмента кода, переменная типа BufferedReader. Про equals говорилось две лекции назад. В данном случае сравниваются две строки на эквивалентность.
hidden #2892481 Уровень 6
11 ноября 2021
Если у других тоже такие вопросы, вот нужные статьи Про buffer: https://javarush.com/groups/posts/1919-schitihvanie-s-klaviaturih--riderih Про equals: https://javarush.com/groups/posts/equals-java-sravnenie-strok
Виталий Уровень 16
10 августа 2021
А что такое "!" перед isExit?
Даниил Уровень 16
16 августа 2021
Отрицание условия. В данном случае, дословно это означает не ложь, а правда.

  !false = true
  !true = false
Для более полного понимания, можно прочесть об этом подробнее в этой лекции Тык сюда
xseiter Уровень 11
12 апреля 2021
надо повторить метод boolean, дырка в голове, провал, недопонимание
Юрий Болдуев Уровень 6
6 мая 2021
boolean это не метод, а тип
xseiter Уровень 11
6 мая 2021
спасибо за поправочку =)
Styopa Egiazaryan Уровень 10
16 марта 2021
А почему в задании, где нужно повторить текст, Boolean с большой буквы В???
mot.aléatoire Уровень 4
20 марта 2021
Потому что Boolean тут -- класс-обертка. См. тут: https://javarush.com/groups/posts/1948-objertki-raspakovka-i-zapakovka