Циклы

Открыта

— Привет.

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

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

Цикл (пример 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».
2
Задача
Java Syntax,  4 уровень,  8 лекция
Недоступна
Набираем код
Внимание! Объявляется набор кода на JavaRush. Для этого включите режим повышенной внимательности, расслабьте пальцы, читайте код и… набирайте его в соответствующем окошке. Набор кода — вовсе не бесполезное занятие, как может показаться на первый взгляд: благодаря ему новичок привыкает к синтаксису и запоминает его (современные IDE редко дают ему это сделать).

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

Комментарии (107)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Бурцев Юрий4 уровень, Санкт-Петербург
вчера, 12:04
Почему форматирование кода не стандартное для java?
السعادة الحظ5 уровень, Уфа
вторник, 17:30
получается, while (!isExit) и while(true)-эти значения одинаковые?
Роман Роман7 уровень, Омск
среда, 04:48
Да, важно понять, что цикл while выполняется только когда его условие, указанное в скобках верное. Пусть даже если значение переменной у вас false. Так что пока переменная у вас false, то внутри цикла у вас условие = true
السعادة الحظ5 уровень, Уфа
пятница, 20:29
благодарю
OldHook13 уровень, Фрязино
25 ноября, 15:38
Самые легкие задачи типа "Набираем код". Ctrl+A, Ctrl+C, Tab, Ctrl+V = задача решена :-)
Denis Chertenko7 уровень
27 октября, 22:09
Самые ленивые уже изучили циклы к этому уроку, чтобы не копипастить по 10 раз строку System.out.print на предыдущих уровнях))
Wahldemahr8 уровень, Харьков
17 ноября, 15:33
Лень, как не крути, - двигатель прогресса...
OldHook13 уровень, Фрязино
25 ноября, 15:39
Не ленивые а "эффективные" :-) Менеджеры любят такие слова.
Max5 уровень, Москва
среда, 12:45
Скопипастить реально быстрее, чем набирать код и думать не надо
Maxim Galushko7 уровень, Новосибирск
25 сентября, 07:49
честно говоря, из комментариев я так и не понял, почему когда в блоке команд переменной isExit присваивается значение true ( isExit = s.equals("exit")). isExit = ложь while (isExit правда) { //пока условие истинно, т.е. isExit - правда выполняется блок команд String s = buffer.readLine(); //считываем значение с клавиатуры и передаем в s isExit=s.equalse("exit") // s.equalse("exit") - сравниваем значение в переменной s с "exit" // isExit=s.equalse("exit") - теперь переменная isExit имеет значение либо true (если s=exit), либо false (если s != exit). Соответственно, если цикл выполняется до тех пор пока условие ИСТИННО (true),то когда isExit=true цикл должен ПРОДОЛЖАТЬСЯ. ПОЧЕМУ ЖЕ КОГДА УСЛОВИЕ ЦИКЛА TRUE ОН ПРЕКРАЩАЕТ СВОЮ РАБОТУ????
29 сентября, 09:17
мне самому только что объяснили: если мы вводим что угодно кроме "exit", выражение isExit=s.equals("exit") выдает false (s != exit), тогда цикл while снова проверяет условие (!isExit) - т.к. у нас выше isExit был false, то условие цикла все еще true (потому что !isExit = true) и он будет снова и снова выполняться, а вот если мы введем наконец "exit", то s.equals("exit") только теперь станет true - и тогда условие (!isExit) цикла while в первый раз станет false ну и цикл остановится, т.к. цикл выполняется только тогда, когда условие true
Maxim Galushko7 уровень, Новосибирск
1 октября, 02:51
Блин, ну ведь точно же🤦‍♂️ спасибо тебе большое! Ты спас мой мозг!=)
Максим Давыдов8 уровень, Владивосток
6 октября, 21:59
а ты перенеси вычитку строки в цикл и будет тебе счастье :) ты же сейчас в принципе только одно значение и считываешь
oleg15 уровень
7 октября, 15:14
ну да ! спс
Роман Роман7 уровень, Омск
среда, 04:49
вот так еще может будет кому-то понятней
while (!isExit)
будет тоже самое что и
while (isExit == false)
Т.е. пока у вас isExit false цикл будет выполняться (потому что для самого цикла условие верное), но как только внутри цикла у вас isExit станет true у вас не выполнится условие цикла, в котором сказано, что isExit должен быть false.
hidden #21228714 уровень
20 сентября, 16:48
Почти все задачи сделал через if, for забыл, теперь while круто че
01eg6 уровень, Москва
28 сентября, 06:26
for же не было еще) ps тоже все через иф пока решал)
Sergey Zotov5 уровень, Челябинск
30 сентября, 17:12
строки через for удобно считывать было)
Николай11 уровень, Москва
18 октября, 20:45
одну и туже задачу можно решить разными способами, никто не запрещает, главное, чтобы тесты проходили
lena_surm6 уровень, Москва
20 августа, 09:44
"Настало время изучать циклы! " - на этой фразе я подумала: "Ага, самое время, когда я 90% задач ими уже прорешала" ))))))))))
Юля Лобас26 уровень, Костанай
24 августа, 11:34
Вот именно все ак то с опозданием дают.
Алексей5 уровень
26 августа, 14:15
Наверно, чтобы ученики научились искать некоторую информацию самостоятельно. У моего знакомого в универе был препод, который задавал домашнее задание на тему, которую они будут проходить на след. занятии. Кажется, что чушь, но на самом деле, ты приходишь с массой вопросов и, получив на них ответ, улучшаешь понимание материала.
Ольга13 уровень, Санкт-Петербург
6 сентября, 12:40
пока не было задач, для которых исключительно необходим был бы цикл. Задачи построены на постепенной отработке теоретических навыков
Андрей10 уровень, Москва
12 октября, 12:42
а таблица умножения хотя бы
Andriy Pikus16 уровень, Вараш
18 октября, 06:18
Через ctrl+c ctrl+v например
Денис Губернаторов9 уровень, Владимир
27 октября, 06:51
Задачи с циклами были помечены как HARD и MEDIUM (повяшенная сложность), это предполагает, что ты, как продвинутый ученик в классе, уже почитал учебник на пару глав вперед.... их можно было оставить и решить когда пройдешь необходимый матер ал со всем классом ;-))
JanProover9 уровень, Москва
25 июля, 14:00
то чувство, когда при перепечатывании упустил капс в readLine() и 40 минут винил все и вся
Nikita Maximov6 уровень, Москва
16 сентября, 20:10
Если бы не этот коммент, так же бы сидел)
progr8 уровень
9 июня, 15:07
не понимаю, зачем писать так сложно, можно было объяснить по другому, например так: пока i>=0 будет выполняться тело цикла. Вот если бы я до этого не знал про циклы не понял бы вообще что к чему.
Allan Teone9 уровень
15 мая, 16:39
Ребят, вопрос по этому примеру:
String s = buffer.readLine();
    isExit = s.equals("exit");
Согласно обьяснению, в s будет заноситься все, что я печатаю с клавиатуры до тех пор, пока s не станет равна "exit". То есть это не значит, что программа закончит работу, когда после миллиона символов я вдруг введу exit, так? Другими словами, если я введу какой-либо первый символ, и это будет не e, то программа сама по себе работу уже не закончит?
Станислав5 уровень, Санкт-Петербург
17 мая, 09:30
Введенная строка целиком должна быть равна "exit". Если в введенной фразе содержится это слово, то программа не среагирует на выход.
S22 уровень, Минск
16 июля, 22:26
Печатаешь и нажимаешь ввод. Только тогда считывается то, что ты напечатал с "exit".
progr8 уровень
4 августа, 02:37
да, тогда булева переменная станет true а так как в условии будет стоять нетру, условие станет нетру и произойдет выход из цикла
progr8 уровень
4 августа, 02:37
да, тогда булева переменная станет true а так как в условии будет стоять нетру, условие станет нетру и произойдет выход из цикла