JavaRush /Курсы /JAVA 25 SELF /Цикл while: знакомство и нюансы работы

Цикл while: знакомство и нюансы работы

JAVA 25 SELF
4 уровень , 1 лекция
Открыта

1. Введение

В программировании регулярно приходится выполнять одни и те же действия много раз подряд. Например:

  • Пройтись по всем элементам списка.
  • Считать с клавиатуры значения, пока пользователь не введет нужное.
  • Считать сумму всех чисел от 1 до 100.
  • Запрашивать у пользователя пароль до тех пор, пока он не станет правильным.

Если попытаться всё это реализовать без циклов, получится длинно, скучно и не масштабируемо. Представьте, что вы пишете программу-калькулятор и решаете складывать числа от 1 до 10 вручную:

int sum = 0;
sum = sum + 1;
sum = sum + 2;
sum = sum + 3;
// ... и так 10 раз. Мда.
Ручное повторение без цикла — неудобно!

Вы заскучаете раньше, чем закончите! Решение — циклы. Они позволяют описать повторение действий лаконично и понятно. Сегодня мы познакомимся с самым базовым, но чертовски полезным циклом — while.

2. Знакомство с циклом while

Синтаксис и базовая схема

Цикл while — это "попугай" в мире программирования: он повторяет один и тот же фрагмент кода до тех пор, пока выполняется некое условие. Как только условие перестаёт быть истинным, попугай замолкает (цикл заканчивается).

Синтаксис:

while (условие)
{
    // Тело цикла
}
Запись цикла while с блоком команд

Диаграмма

Вот простая блок-схема для понимания работы цикла while:

uml-while

3. Примеры: цикл while в действии

Классический счетчик

Сделаем простую программу, которая считает от 1 до 5 и выводит числа:

int i = 1;
while (i <= 5)
{
    System.out.println("Шаг № " + i);
    i++; // Не забудьте увеличить счетчик!
}
// Выведет:
// Шаг № 1
// Шаг № 2
// Шаг № 3
// Шаг № 4
// Шаг № 5

Обратите внимание: если забыть увеличить переменную i, цикл никогда не завершится (наш попугай станет бессмертным и вечным повторятелем). Это называется бесконечный цикл — пугающая штука.

Ввод с клавиатуры до нужного значения

Нередко цикл используется для того, чтобы "дожимать" пользователя до верного ответа:

String password = "";
while (!password.equals("qwerty"))
{
    System.out.print("Введите пароль: ");
    password = console.nextLine();
}
System.out.println("Добро пожаловать!");

Здесь программа просит ввести пароль, пока вы не напечатаете магическое "qwerty". Не забудьте: если удалить строку password = console.nextLine();, цикл снова станет бесконечным (будет спрашивать пароль, но не будет читать ввод — залипнет навсегда, как сломавшийся робот).

4. Виды и сценарии использования цикла while

Обычный цикл while

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

Пример: условие не выполняется сразу

int i = 10;
while (i < 5)
{
    System.out.println(i); // Не выполнится никогда!
}

Что, собственно говоря, логично. Именно так, как тут и написано.

Вложенные циклы while

Иногда нужно сделать цикл внутри цикла. Например, перебрать все строки и в каждой из них проверить все символы. На данном этапе это скорее авантюра, но вот пример по-простому:

int i = 1;
while (i <= 3)
{
    int j = 1;
    while (j <= 2)
    {
        System.out.println("i = " + i + ", j = " + j);
        j++;
    }
    i++;
}

// i = 1, j = 1
// i = 1, j = 2
// i = 2, j = 1
// i = 2, j = 2
// i = 3, j = 1
// i = 3, j = 2

Подробнее мы разберем вложенные циклы через пару лекций, просто хотел вас попугать :)

Бесконечный цикл

Иногда циклы завершаются, а иногда — живут вечно.

while (true)
{
    System.out.println("Я вечен!");
}

Используется редко, обычно для каких-нибудь фоновых процессов (например, работа сервера), но тоже применяется на практике.

5. Как не писать глупости: частые ошибки с while

В программировании цикл — это как электричество: классно, но надо знать правила безопасности.

Проблема 1: бесконечный цикл по невнимательности

Очень часто новички забывают обновлять переменную, от которой зависит условие. В результате цикл работает "бесконечно", и приходится останавливать программу принудительно (например, сочетанием Ctrl + C).

int i = 1;
while (i <= 5)
{
    System.out.println(i);
    // i++;  // ОЙ! Забыли увеличить i
}

Проблема 2: неверно заданное условие

Иногда разработчик сам себе роет яму: условие, наоборот, никогда не бывает истинным. В результате цикл не выполняется вообще.

int i = 10;
while (i < 5)
{
    System.out.println(i); // Данный код никогда не сработает.
    i++;
}

Проблема 3: ошибка с типами данных

В условии цикла всегда должно быть булево выражение — то есть результат вычислений должен быть true или false.

int number = 5;
while (number) // Ошибка! Ожидался boolean, а не int.
{
    number--;
}
1
Задача
JAVA 25 SELF, 4 уровень, 1 лекция
Недоступна
Обратный отсчет перед стартом 🚀
Обратный отсчет перед стартом 🚀
1
Задача
JAVA 25 SELF, 4 уровень, 1 лекция
Недоступна
Разблокировка смартфона 📱
Разблокировка смартфона 📱
1
Задача
JAVA 25 SELF, 4 уровень, 1 лекция
Недоступна
Вывод мест в кинотеатре 🎞️
Вывод мест в кинотеатре 🎞️
1
Задача
JAVA 25 SELF, 4 уровень, 1 лекция
Недоступна
Учет трат на кофе ☕
Учет трат на кофе ☕
Комментарии (15)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Юрий Уровень 5
16 января 2026
Отличная 4 задача. Прям заставила уже подумать.
Анна Клушкина Уровень 12
2 января 2026
⛏ Ботаем-ботаем
Ilya Kholodilov Уровень 4
28 декабря 2025
4 задача заставила подумать)
Anna Уровень 7
15 декабря 2025
Последняя задача прикольная.
hottabych007 Уровень 14
7 декабря 2025
Условия зачади "учет затрат на кофе" оказались трудны для понимания, если бы не "анализ кода" наверное не решил бы эту задачу.
9forty Уровень 13
5 декабря 2025
Отличная лекция, наконец-то задачи где нужно хоть чуть-чуть подумать и в описании явно не написано решение. Последняя задача - глоток воздуха после череды душных однотипных "выведете на экран".
Anonymous #6428995 Уровень 5
27 ноября 2025
Ставьте лайки!)
13 ноября 2025
Интересно...😋
Дмитрий Уровень 4
22 октября 2025
Вообще не понята задача №4. Нет подробной инфы о подобном, к сожалению. Придется гуглить.
Goodsmack Уровень 1
26 сентября 2025
Что-то ниже не понимают лекцию с задачами, а я всё легко понял... Я гений?😂