Цикл while — наиболее фундаментальный оператор цикла Java. Он повторя¬ет оператор или блок операторов, пока его управляющее выражение имеет значение true. Вот его общая форма: while(condition) { // тело цикла } Здесь condition может быть любым булевским выражением. Тело цикла бу¬дет выполняться до тех пор, пока условное выражение имеет значение true. Когда condition становится false, управление передается строке програм¬мы, следующей непосредственно за циклом. Фигурные скобки не нужны, если повторяется одиночный оператор. Следующий while-цикл считает в обратном порядке от 10, печатая точно десять "тик"-строк: // Демонстрирует while-цикл.
public 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 оценивает условное выражение в самом начале своей работы, тело цикла не будет выполняться ни одного раза, если условие сразу же имеет значение false. Например, в следующем фрагменте обращение к println () никогда не выполняется: int а = 10, b = 20; while(а > b) System.out.println("Эта строка никогда не выведется");
Тело цикла while (или любого другого цикла Java) может быть пустым. Это потому, что в Java синтаксически допустим пустой (null) оператор (который состоит только из точки с запятой). Например, рассмотрим следующую программу:
// Тело цикла может быть пустым.
public 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 короткие циклы часто кодируются без тел, когда управляющее выражение может само обрабатывать все детали.
Примечание: Инкремент и декремент В Java существует два оператора, называемых операторами инкремента и декремента (++ и --) и являющихся сокращенным вариантом записи для сложения или вычитания из операнда единицы. Эти операторы уникальны в том плане, что могут использоваться как в префиксной, так и в постфиксной форме. При использовании префиксной формы операнд модифицируется перед выполнением операции. В постфиксной форме сначала используется содержимое операнда, а лишь после этого операнд инкрементируется или декрементируется. Следующий пример иллюстрирует использование операторов инкремента и декремента.
public class IncDec {
public static void main(String[] args) { int j1, i1 = 1; j1 = i1--; System.out.println("j1 = " + j1 + ", i1 = " + i1); int j2, i2 = 1; j2 = --i2; System.out.println("j2 = " + j2 + ", i2 = " + i2);
} }
Результат будет выглядеть так: j1 = 1, i1 = 0 j2 = 0, i2 = 0
|