Циклы Java: While и Do-While
Цикл Java While Do – это инструкция, позволяющая запускать один и тот же фрагмент кода несколько раз. Этот цикл можно использовать для повторения действий при соответствии условий.
Цикл While
Цикл while является самым простым для построения на языке Java. Он состоит из ключа while, условия loop, а также тела цикла:
while (condition) {
// loop body
}
Каждый отдельный запуск тела цикла расценивается как итерация. Перед каждой итерацией производится оценка условий цикла. Его тело исполняется, только если условия цикла по результатам оценки равно true.
Итерации цикла что-то меняют, и в определенный момент оценка условий возвращает false, после чего цикл завершается. Цикл, условие которого никогда не возвращает false, исполняется бесконечное количество раз. Такие циклы называются бесконечными.
Пример
int num = 0;
while (num < 10) {
System.out.println(num);
num++;
}
Этот пример выводит числа от 0 до 9. Давайте пошагово пройдёмся по коду. Сначала мы инициализируем переменную num со значением равным 0. Это будет счётчик цикла. Когда программа доходит до while, производится оценка выполнения условий цикла. В нашем случае 0 < 10 возвращает значение true и исполняется тело цикла. Внутри цикла выводится переменная num, а затем увеличивается на 1. На этом завершается первая итерация.
После первого «прогона» условие цикла While Java оценивается во второй раз. 1 < 10 по-прежнему возвращает true, после чего запускается следующая итерация цикла. Один и тот же процесс повторяется несколько раз.
Завершающая итерация начинается, когда значение num равняется 9. Счётчик цикла выводится в последний раз, и значение увеличивается до 10. На этот раз новая итерация не может быть запущена, так как условие цикла выдаёт значение false. Так как 10 не меньше 10.
Таким образом, цикл запускается до тех пор, пока условием цикла выполняется. Вооружившись этим знанием, можно создавать более сложные и функциональные циклы. Давайте проведёт итерацию с массивом:
String[] names = {"Doc", "Dopey", "Bashful", "Grumpy", "Sneezy", "Sleepy", "Happy"};
int index = 0;
while (index < names.length) {
System.out.println(names[index]);
index++;
}
Концепция этого примера схожа с предыдущим. Мы инициализируем счётчик цикла и запускаем итерацию по массиву до тех пор, пока выводятся все элементы. В результате, итерация по массивам – довольно распространённый случай, и в Java для этого есть более подходящая конструкция – цикл For.
Цикл do-while
Цикл Java while do похож на while, но имеет существенное отличие: в отличие от while, здесь условие проверяется по окончании каждой итерации. Это значит, что цикл do-while всегда исполняется хотя бы один раз:
do {
// loop body
}
while (condition);
Пример
do-while сначала исполняет тело цикла, а затем оценивает его условия. В зависимости от полученного результата цикл останавливается или запускается следующая итерация. Давайте рассмотрим простую игру «угадай имя»:
Scanner scanner = new Scanner(System.in);
String guess;
do {
System.out.print("Угадай имя: ");
guess = scanner.nextLine();
}
while (!"Daffy Duck".equals(guess));
System.out.println("Поздравляю! Ты угадал моё имя!");
В этом while Java примере используется Scanner для парсинга ввода из system.ini. Это стандартный канал ввода, который в большинстве случаев взаимодействует с клавиатурой. Проще говоря, мы просто читаем текст, который вводит игрок.
В игре необходимо спросить пользователя хотя бы раз, и делать это до тех пор, пока игрок вводит правильные ответы. Цикл do-while идеально подходит для таких случаев. В теле цикла мы получаем пользовательское значение, а затем проводится проверка правильности ответа. Цикл должен запускаться до тех пор, пока вводимое пользователем значение не становится равным Daffy Duck. Если правильный ответ получен, цикл останавливается, и мы поздравляем игрока с победой.
В завершение

Циклы while true Java позволяют использовать фрагменты кода несколько раз. Сегодня мы познакомились с циклами Java while и do-while. Они похожи тем, что проверяют условия и исполняют тело цикла, если по результатам оценки условия получено значение true. Но при этом у них есть существенное отличие: условие цикла while проверяется до итерации, а условие цикла do-while – по окончании каждой итерации. Это значит, что цикл do-while всегда исполняется как минимум один раз.