Циклы

Открыта

Фрагмент лекции 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 Beta,  4 уровень8 лекция
Недоступна
Хорошего не бывает много
Хорошего не бывает много

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

Комментарии (213)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Cat_Virus
Уровень 9
21 декабря 2023, 10:44
Если в программе из видео написать: int n = 0; while (n < 10) { System.out.println(n++ + " Сделай шаг"); } получиться тот же самый результат с нумерацией шагов от 0 до 9. А если изменить n++ на ++n, то получиться нумерация шагов с 1 до 10. Прикольно:) Вроде как пример на различия в префиксной и постфиксной форме инкремента получился.
Евгений
Уровень 47
27 июля 2022, 16:57
Лектор, который рассказывает про циклы оч крут. Приятно слушать и все доходчиво. Жаль не все видео с этим преподом)
Eugene
Уровень 12
12 января 2022, 20:02
Для того, чтобы было проще понять пример с isExit, можно представить, что вместо строки while (!isExit) мы пишем while true. В начале мы задаем значение переменной isExit = false, поэтому инверсия !isExit это true. Цикл while выполняется только тогда, когда в его скобках выражение принимает значение true, поэтому когда в результате команды isExit=s.equals("exit") isExit станет true, выражение в скобках цикла while (!isExit) примет значение false, и выполнение цикла прекратится.
Деня
Уровень 2
31 января 2022, 03:26
теперь понял, спасибо.
Сергей
Уровень 10
18 августа 2022, 16:31
лучшее объяснение
Uncle Bogdan
Уровень 8
19 декабря 2021, 15:56
Сейчас я вам объясню историю с 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, 14:21
! - это инверсия. !true = false !false = true
Андрей
Уровень 6
22 октября 2021, 20:37
зачем писать boolean isExit = false, если тип boolean и так false?
Egor Kurilko
Уровень 7
4 декабря 2021, 12:35
Ага, грязный код, занимает лишнюю память )
Лера ПроцькоEnterprise Java Developer в Booz Allen Hamilton
28 января 2024, 23:29
здесь мы указываем начальное значение: boolean isExit = false потому что может быть начальное значение true. Тогда мы напишем boolean isExit = true
Игорь Топоров
Уровень 14
11 сентября 2021, 22:41
Скажите люди добрые, что за слова buffer.readLine(); И isExit = s.equals Пришёл после чтения Шилдта повторить циклы, а тут такое!
Михаил Кладовщик 80lvl
12 сентября 2021, 16:41
Предположу что buffer это объявленная, за рамками этого фрагмента кода, переменная типа BufferedReader. Про equals говорилось две лекции назад. В данном случае сравниваются две строки на эквивалентность.
hidden #2892481
Уровень 6
11 ноября 2021, 19:58
Если у других тоже такие вопросы, вот нужные статьи Про buffer: https://javarush.com/groups/posts/1919-schitihvanie-s-klaviaturih--riderih Про equals: https://javarush.com/groups/posts/equals-java-sravnenie-strok
Виталий
Уровень 16
10 августа 2021, 18:25
А что такое "!" перед isExit?
Уровень 1
16 августа 2021, 01:43
Отрицание условия. В данном случае, дословно это означает не ложь, а правда.
!false = true
!true = false
Для более полного понимания, можно прочесть об этом подробнее в этой лекции Тык сюда
xseiter
Уровень 11
12 апреля 2021, 09:54
надо повторить метод boolean, дырка в голове, провал, недопонимание
Юрий Болдуев
Уровень 6
6 мая 2021, 17:32
boolean это не метод, а тип
xseiter
Уровень 11
6 мая 2021, 17:53
спасибо за поправочку =)
Styopa Egiazaryan
Уровень 10
16 марта 2021, 12:34
А почему в задании, где нужно повторить текст, Boolean с большой буквы В???
mot.aléatoire
Уровень 4
20 марта 2021, 23:52
Потому что Boolean тут -- класс-обертка. См. тут: https://javarush.com/groups/posts/1948-objertki-raspakovka-i-zapakovka