Do while Java и цикл while: как работают и чем отличаются
Цикл do while Java проверяет условие после выполнения тела, а while – перед ним. Поэтому while может пропустить тело, а do-while выполняет его минимум 1 раз. Условие продолжения цикла должно иметь тип boolean.
Цикл while Java с примерами счетчика и обхода массива
Цикл while в Java повторяет тело, пока условие возвращает true. Перед каждой итерацией программа заново проверяет условие.
while (condition) {
// Тело цикла
}Вместо condition запишите выражение типа boolean, например num < 10. Если первая проверка вернет false, программа пропустит тело.

Пример со счетчиком от 0 до 9
Этот код выводит числа от 0 до 9. Переменная num хранит текущий счетчик.
int num = 0;
while (num < 10) {
System.out.println(num);
num++;
}Сначала программа проверяет условие 0 < 10. После вывода num++ увеличивает значение на 1. При значении 10 условие становится ложным.
Программа напечатает 10 строк:
0
1
2
3
4
5
6
7
8
9Пример обхода массива
Счетчик index позволяет обратиться к каждому элементу массива по очереди.
String[] names = {"Doc", "Dopey", "Bashful", "Grumpy", "Sneezy", "Sleepy", "Happy"};
int index = 0;
while (index < names.length) {
System.out.println(names[index]);
index++;
}Программа выведет 7 имен в порядке их расположения:
Doc
Dopey
Bashful
Grumpy
Sneezy
Sleepy
HappyПервый элемент массива имеет индекс 0, последний – names.length - 1. Условие index < names.length не дает обратиться за границы массива.
Цикл do while Java: проверка после тела
Цикл do-while сначала выполняет тело, затем проверяет условие продолжения. Используйте его, когда действие должно произойти хотя бы 1 раз.
do {
// Тело цикла
} while (condition);После условия do-while ставится точка с запятой. Без нее компилятор сообщит об ошибке синтаксиса.
Пример проверки ввода пользователя
Игра повторяет запрос, пока пользователь вводит неправильное имя. Импорт нужен для работы с классом Scanner.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String guess;
do {
System.out.print("Угадайте имя: ");
if (!scanner.hasNextLine()) {
return;
}
guess = scanner.nextLine();
} while (!"Daffy Duck".equals(guess));
System.out.println("Поздравляю! Вы угадали имя!");
}
}Класс Scanner читает строки из System.in – стандартного потока ввода. Проверка hasNextLine() завершает программу, если поток закончился.
Метод equals() сравнивает ответ со строкой "Daffy Duck". Неправильный ответ сохраняет условие true, а правильный завершает цикл.
Диалог при двух попытках выглядит так:
Угадайте имя: Doc
Угадайте имя: Daffy Duck
Поздравляю! Вы угадали имя!Переменная guess объявлена перед циклом из-за области видимости. Переменная, объявленная внутри do { }, недоступна в условии while (...).
Сравнение учитывает регистр и пробелы, поэтому вводите имя точно.
Операторы break и continue в циклах Java
Оператор break завершает ближайший цикл. Оператор continue пропускает оставшуюся часть текущей итерации.
Оба оператора работают в while и do-while. Используйте break для досрочного выхода, а continue – для перехода к следующей проверке условия.
int num = 0;
while (num < 10) {
num++;
if (num % 2 == 0) {
continue;
}
if (num > 5) {
break;
}
System.out.println(num);
}Программа выводит 3 нечетных числа:
1
3
5При четном числе continue пропускает проверку и вывод. При значении 7 оператор break завершает цикл до печати числа.
В while оператор continue передает управление к проверке условия. В do-while он ведет к условию после тела.
Бесконечный цикл Java: while true Java и выход через break
Конструкция while (true) задает условие, которое всегда истинно. Для управляемого выхода добавьте break в ветку с командой завершения.
Чтение ввода до команды выхода
Программа повторяет введенные строки до команды exit или завершения потока ввода.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.print("Введите текст или exit: ");
if (!scanner.hasNextLine()) {
break;
}
String line = scanner.nextLine();
if ("exit".equals(line)) {
break;
}
System.out.println("Вы ввели: " + line);
}
System.out.println("Ввод завершен.");
}
}Введите Привет, затем exit. Консоль покажет такой диалог:
Введите текст или exit: Привет
Вы ввели: Привет
Введите текст или exit: exit
Ввод завершен.Ожидание строки пользователя не означает зависание. Цикл завершится, когда программа достигнет одного из операторов break.
Забытое изменение счетчика
В этом фрагменте значение num постоянно равно 0:
int num = 0;
while (num < 10) {
System.out.println(num);
// Ошибка: забыли увеличить счетчик
}Условие остается истинным, поэтому программа бесконечно печатает одно число. Добавьте num++ после вывода.
Точка с запятой после while
В конструкции while (condition); точка с запятой образует пустое тело. Следующий блок уже не относится к циклу.
int num = 0;
while (num < 10); // Цикл имеет пустое тело
{
num++;
}Счетчик не меняется внутри пустого тела, поэтому условие остается истинным. Удалите точку с запятой после закрывающей скобки условия.
Условие, которое не становится ложным
Вычисления с double могут накапливать погрешность. Точное равенство после последовательных прибавлений не гарантировано.
double value = 0.0;
while (value != 1.0) {
value += 0.1;
}Значение может перескочить через 1,0 без точного совпадения. Поэтому условие value != 1.0 способно оставаться истинным.
Если нужны ровно 10 шагов, используйте целочисленный счетчик:
int step = 0;
while (step < 10) {
step++;
double value = step / 10.0;
System.out.println(value);
}Как остановить зациклившуюся программу
В консоли, где запущена программа, нажмите Ctrl+C. При запуске из IDE нажмите кнопку остановки «Stop».
Принудительная остановка завершает процесс, но не исправляет условие. Перед повторным запуском проверьте изменение переменных и достижимость break.
Когда выбирать while, do-while и for
Выбирайте конструкцию по моменту проверки условия и способу управления повторениями.
| Цикл | Когда проверяется условие | Минимум итераций | Типичная задача |
|---|---|---|---|
while | Перед телом | 0 | Повторять действие, пока выполняется условие |
do-while | После тела | 1 | Запросить ввод и проверить ответ |
for | Перед телом | 0 | Перебрать диапазон со счетчиком |
Для for начальное значение, условие и изменение счетчика находятся в одной строке:
for (int num = 0; num < 10; num++) {
System.out.println(num);
}Синтаксис while и do-while также разобран в официальном учебнике Oracle.
Какой цикл выбрать для задачи
Для консольного меню с несколькими командами используйте while (true). Обрабатывайте команды внутри тела, а команду выхода связывайте с break.
Совет от нашей редакции: проверьте выход из цикла на граничных случаях. Для счетчика начните со значения на границе, для меню сразу введите команду выхода. Так вы заметите лишнюю итерацию или недостижимое завершение.
Популярное за неделю
- Как создать сайт самому в 2026: 4 способа + пошаговая инструкция 34 мин чтения
- Лучшие конструкторы для создания сайтов — плюсы, минусы и сравнения 22 мин чтения
- Как преобразовать строку в целое число в Java 2 мин чтения
- Метод tostring java: как получить читаемый вывод объектов 9 мин чтения
- Как создать калькулятор на Java для Android с полным кодом 5 мин чтения
- Как настроить mysql connector java для подключения к MySQL 12 мин чтения
Комментарии
Можно более доступно для нубов?