Циклы

Открыта

— Привет.

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

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

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

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

Комментарии (65)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Allan Teone5 уровень
среда, 16:39
Ребят, вопрос по этому примеру:
String s = buffer.readLine();
    isExit = s.equals("exit");
Согласно обьяснению, в s будет заноситься все, что я печатаю с клавиатуры до тех пор, пока s не станет равна "exit". То есть это не значит, что программа закончит работу, когда после миллиона символов я вдруг введу exit, так? Другими словами, если я введу какой-либо первый символ, и это будет не e, то программа сама по себе работу уже не закончит?
Станислав4 уровень, Санкт-Петербург
пятница, 09:30
Введенная строка целиком должна быть равна "exit". Если в введенной фразе содержится это слово, то программа не среагирует на выход.
Roman Deryabin5 уровень, Омск
13 мая, 11:46
Может кто-нибудь объяснить из примера про exit? как именно связано boolean со значением в s. Может я не правильно читаю код, но вижу там следущее: isExist - ложь Условие (пока не ложь выполняем){ Считываем строку Устанавливаем isExist(Это же булеан?) значение из введенной строки } И вот мне не понятно в какой момент isExist стал true и как это связано. Может кто материал по этому поводу подкинет. Спасибо)
Алексей6 уровень, Екатеринбург
13 мая, 18:05
А какой именно пример? вот тут:
isExit = s.equals("exit");
сравниваются строки, типа s == exit , соответственно либо равно - true, либо не равно - false. вот тут:
if (s.equals("exit"))
        break;
когда на клавиатуре набрано "exit", то срабатывает break
Roman Deryabin5 уровень, Омск
вторник, 08:07
Да во всех примерах. Я не понимаю в какой момент булеан стал сравнивать со значением в строке.
isExit = s.equals("exit")
вот тут мы же булеановской переменной присваиваем строку? Даже если и так, то почему значение становится true?
Алексей6 уровень, Екатеринбург
вторник, 19:10
нет! присваиваем уже результат сравнения String - это не примитивный тип, это класс, и у него есть свои методы "equals" - это метод класса String, который сравнивает строки между собой, и возвращает true если строки одинаковые и false если строки разные. т.е.:
isExit = s.equals("exit")
означает: isExit присвоить результат метода (переменную "s" сравнить с "exit") как-то так. https://metanit.com/java/tutorial/7.1.php
skil1635 уровень, Самара
вторник, 19:15
isExit = s.equals("exit")
переменная isExit имеет тип boolean , а метод сравнения строк equals тоже возвращает тип boolean и сравнивает строки , получается как бы так : boolean isExit = если строка переданная в консоль ровна строке переданной в метод equals метод вернет значение true. И тогда в цикле while мы получим (не)!true, то есть false, и выйдем из цикла.
Roman Deryabin5 уровень, Омск
позавчера, 14:33
спасибо. теперь понятно)
GigaMax12 уровень
22 апреля, 17:47
Повторить всегда полезно)))
gastell06 уровень, Москва
2 апреля, 07:43
Довольно странно, что курс приучает писать код, нарушающий общепринятые правила java. { - никогда не должна переноситься в отдельную строку.
New Year9 уровень, Москва
22 апреля, 17:36
Это сделано для того, чтобы новичкам было визуально наглядно воспринимать написанный код
Sergey13 уровень
15 марта, 06:45
+ 1 шаг к цели "Стать Java-программистом"
Никита19 уровень, Москва
12 февраля, 17:26
Ошибка в примере. Должно быть boolean с маленькой буквы.
Denis7 уровень
13 февраля, 18:55
тоже заметил, а может это и не ошибка, а просто мы пока мало знаем..
Никита19 уровень, Москва
14 февраля, 19:49
нет. это ошибка
Hexronimo19 уровень
15 февраля, 07:44
Нет, это не ошибка, это класс-обертка для boolean.
Владислав23 уровень, Москва
17 февраля, 01:31
В Java над простыми типами есть обертки: Integer, Boolean, Double и т.д. На практике разница в том что boolean не может быть null, ну и прочие плюшки объектов вместо простых значений: ссылка в переменной вместо значения, создание через new, методы объекта вроде toString(), и т.д.
Александр23 уровень, Казань
24 декабря 2018, 09:47
Не слушайте советы ниже про копи-паст )
Alexey Petrov18 уровень
16 июня 2018, 22:19
Только недавно заметил, что код в задачке типа "Набираем код" почти всегда можно скопировать из одного из примеров :)
Евгений10 уровень, Днепр
24 июня 2018, 23:47
:) Все равно молодец :) Многие задачи очень похожи, надо только некоторые места поправить. Я все время копирую код из старых задач :)
Никита Ефремов7 уровень, Санкт-Петербург
20 июля 2018, 18:12
Я тоже.Особенно от InputStream до BufferedReader включительно)
Alex D8 уровень, Москва
15 августа 2018, 14:59
а я стараюсь исключить копи/паст, так рука набивается быстрее, лучше запоминаются особенности и нюансы, доводя часто встречающиеся вещи до автоматизма. плюс тренировка навыка слепого набора на анг языке
Boston12 уровень
27 декабря 2018, 06:22
Какой смысл учиться тогда?)
Aku24 уровень, Новосибирск
30 декабря 2018, 12:12
Alex D, вразумляя людей своими словами, ты увеличиваешь количество своих конкурентов в будущем.
Ross Fedorov6 уровень, Киев
10 января, 16:15
а я стараюсь исключить копи/паст, так рука набивается быстрее, лучше запоминаются особенности и нюансы, доводя часто встречающиеся вещи до автоматизма. плюс тренировка навыка слепого набора на анг языке Я тоже, иначе, какой смысл учиться?
Булат Хайруллин8 уровень, Казань
25 января, 09:14
Я тоже руки набивал. Как только набил подумал и понял что могу сэкономить время на тупом наборе одного и того же куска кода. Щас копирую.
Майк9 уровень
30 января, 18:53
Я заметил что можно печатать код не совсем как в тексте сверху. К примеру, можно написать не:
public static void main(String[] args)
{

}
а вот так:
public static void main(String[] args) {

}
И это зачтётся. Я уже привык ко второму варианту, потому очень рад что проверки не слишком строгие. P.S. Вопрос для тех кто не копипастит. Вас тоже бесят отсутствующие буквы "ё" в некоторых приложениях для вывода через консоль? "чётные" :)
Elena7 уровень, Москва
17 февраля, 17:18
Alex D, вразумляя людей своими словами, ты увеличиваешь количество своих конкурентов в будущем. )) А вдруг они окажутся не конкурентами, а коллегами, с которыми в одном проекте работать (и бодаться с их копипастом)? Или предшественниками, которые накопипастили и свалили, а ты потом кувыркайся с их кодом )
Roman Afonin31 уровень, Санкт-Петербург
23 февраля, 08:52
ага, очень бесят
gannochka7 уровень, Минск
25 февраля, 20:26
поддерживаю.
АртемGeek18 уровень, Москва
28 февраля, 06:31
Alex D, вразумляя людей своими словами, ты увеличиваешь количество своих конкурентов в будущем. б Aku, хороший программист конкуренции не боится.
Rihard198533 уровень
24 мая 2018, 21:25
Побольше бы таких задач)))
Vlad40 уровень, Санкт-Петербург
9 марта 2018, 11:19
Почему-то при попытке ввести код на повтор, ошибка между while и ()