Цикл while

Оператор while — наиболее часто используемый оператор цикла Java. Он повторяет оператор или блок операторов до тех пор, пока значение его управляющего выражения истинно. Он имеет следующую общую форму:

while{условие){ //тело цикла
}

Условием может быть любое булевское выражение. Тело цикла будет выполняться до тех пор, пока условное выражение истинно. Когда условие становится ложным, управление передается строке кода, непосредственно следующей за циклом. Фигурные скобки могут быть опущены, только если в цикле повторяется только один оператор.

В качестве примера рассмотрим цикл while, который выполняет обратный отсчет, начиная с 10, вывод ровно 10 строк "тактов":

// Демонстрация использования цикла while.
class While {
public static void main(String args[]) {
int n = 10; while(n > 0) {
System.out.println("такт " + n) ;
n—;
}
}
}

После запуска эта программа выводит десять "тактов":

такт 10
такт 9
такт 8
такт 7
такт 6
такт 5
такт 4
такт 3
такт 2
такт 1

Поскольку цикл while вычисляет свое условное выражение в начале цикла, тело цикла не будет выполнено ни разу, если в самом начале условие оказывается ложным. Например, в следующем фрагменте кода метод println () никогда не будет вызван:

int а = 10, b = 20;
while(а > b)
System.out.println("Эта строка отображаться не будет");

Тело цикла while (или любого другого цикла Java) может быть пустым. Это обусловлено тем, что синтаксис Java допускает применение нулевого оператора (содержащего только символ точки с запятой). Например, рассмотрим следующую программу:

// Целевая часть цикла может быть пустой.
class NoBody {
public static void main(String args[]) {
int i, j;
i = 100;
j = 200;
// вычисление среднего значения i и j
while (++i < --j) ; // в этом цикле тело цикла отсутствует
System.out.println("Среднее значение равно " + i);
}
}

Эта программа вычисляет среднее значение i и j.

Она генерирует следующий вывод:

Среднее значение равно 150

Этот цикл while работает следующим образом. Значение i увеличивается, а значение j уменьшается на единицу. Затем программа сравнивает эти два значения. Если новое значение i по-прежнему меньше нового значения j, цикл повторяется. Если значение i равно или больше значения j, выполнение цикла прекращается. По выходу из цикла переменная i будет содержать среднее значение исходных значений i и j. (Конечно, эта процедура работает только в том случае, если в самом начале значение i меньше значения j.) Как видите, никакой потребности в наличии тела цикла не существует. Все действия выполняются внутри самого условного выражения. В профессионально написанном Java-коде короткие циклы часто не содержат тела, если само по себе управляющее выражение может выполнять все необходимые действия.