Циклами называются конструкции, в которых один и тот же блок программного кода многократно выполняется до тех пор, пока не будет выполнено условие окончания цикла. Любой цикл можно разделить на 4 части: инициализацию, тело, итерацию и условие завершения. Инициализация — это код, определяющий начальные условия цикла. Тело - это оператор, выполнение которого необходимо повторить несколько раз. Итерация - код, который требуется выполнить сразу после очередного выполнения тела. Код итерации часто используется для увеличения (уменьшения) значений счетчиков и индексов. Завершение - это логическое выражение, которое вычисляется на каждом проходе цикла. В зависимости от его значения цикл или завершается или продолжает выполняться. В Java есть три циклические конструкции: while, do-while и for.
6.1. Цикл while
Цикл while - это основная циклическая конструкция в Java. Этот цикл многократно выполняется до тех пор, пока значение логического выражения равно true. Ниже приведена общая форма оператора while:
>[ инициализация; ]
>while ( завершение) {
>тело;
>[итерация;]
>}
Инициализация и итерация необязательны. Пока значение логического выражения равно true, продолжается выполнение тела цикла. Ниже приведен пример цикла while для печати пяти строк «while».
>class WhileDemo {
>public static void main(String args[]) {
>int n = 5;
>while (n > 0) {
> System.out.println("while " + n);
> n--;
> }
}
>}
В результате исполнения программы вы получите следующий результат:
>while 5
>while 4
>while 3
>while 2
>while 1
6.2. Цикл do-while
Иногда возникает потребность выполнить тело цикла по крайней мере один раз, даже в том случае, когда логическое выражение с самого начала принимает значение false. Для таких случаев в Java используется циклическая конструкция do-while. Ее общая форма записи такова:
>[ инициализация; ]
>do {тело; [итерация;] } while ( завершение);
В следующем примере тело цикла выполняется до первой проверки условия завершения. Это позволяет совместить код итерации с условием завершения:
>class Do While {
>public static void main(String args[]) {
>int n = 5;
>do {
> System.out.println("do-while " + n);
> } while (--n>0);
}
}
6.3. Цикл for
Опреатор for предназначен для компактной записи циклов. В этом операторе предусмотрены места для всех четырех частей цикла. Ниже приведена общая форма оператора записи for:
>for (инициализация; завершение; итерация ) тело;
Любой цикл, записанный с помощью оператора for, можно записать в виде цикла while и наоборот. Если начальные условия таковы, что при входе в цикл условие завершения не выполнено, то операторы тела и итерации не выполняются ни одного раза. В канонической форме цикла for происходит увеличение целого значения счетчика с минимального значения до определенного предела.
>class ForDemo {
>public static void main(String args[]) {
>for (int i = 1; i <= 10; i++)
> System.out.println("i = " + i);
>}
>}
Следующий пример — вариант программы, ведущей обратный отсчет.
>class ForTick {
>public static void main(String args[]) {
>for (int n = 10; n > 0; n—)
> System.out.println("n= " + n);
>}
>}
Обратите внимание — переменные можно объявлять внутри раздела инициализации оператора for. Переменная, объявленная внутри оператора for, действует в пределах этого оператора.
6.3.1. Оператор запятая
Иногда возникают ситуации, когда разделы инициализации или итерации цикла for требуют нескольких операторов. Поскольку составной оператор в фигурных скобках в заголовок цикла for вставлять нельзя, Java предоставляет альтернативный путь. Применение запятой (,) для разделения нескольких операторов допускается только внутри круглых скобок оператора for.