Цикл while в Java

Java

Цикл – это набор команд, которые выполняются определенное количество раз. Разновидности цикла имеются во всех популярных языках программирования, в том числе и в Java.

Разновидностей цикла в Java несколько:

  • while
  • do..while
  • for
  • foreach

Цикл while называется «циклом с предусловием». Это значит, что сначала проверяется условие в скобках, а затем выполняется тело цикла.

Do..while – это «цикл с постусловием». Это значит, что тело цикла выполнится как минимум один раз. После этого будет проверено условие и в зависимости от его истинности выполнение цикла либо продолжится, либо прервется.

Цикл for обладает счетчиком. Можно установить начальное значение счетчика, задать условие продолжения цикла, а также обновлять его после каждой итерации. Особенно удобен такой цикл при прохождении по элементам массива или в тех случаях, когда тело цикла надо выполнить заданное количество раз.

Цикл foreach разработан специально для массивов и коллекций. Он проходит по всем элементам коллекции и не требует явно обращаться к индексу массива в коде. Здесь будет рассмотрен первый тип – цикл while.

Оператор while в Java

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

В общем виде данная конструкция выглядит так:

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

В данном случае условие должно возвращать true или false. Пока оно равно true, тело цикла выполняется. Как только условие принимает значение false, цикл while заканчивается.

Простой пример работы оператора while:

int counter = 0;
int sum = 0;

while (counter < 10) {
sum += counter;
counter++;
}

System.out.println(sum); // 45

При выполнении обычного цикла while сначала проверяется условие. Если оно ложно, то тело цикла не выполнится ни разу:

boolean flag = false;

while (flag) {
System.out.println(«не будет выполняться»);
}

Отличия while от циклов do..while, for, foreach

Помимо while, есть еще несколько типов циклов. Они не сильно отличаются от while, но обладают своими интересными особенностями.

Цикл do..while очень похож на while, но его тело обязательно выполняется хотя бы один раз. Синтаксис цикла do..while выглядит следующим образом:

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

Такой тип цикла применяется в тех случаях, когда как минимум одна итерация необходима до начала проверок. Он называется оператором постусловия. Пример такого цикла:

Scanner in = new Scanner(System.in);
String password;
do {
password = in.nextLine();
} while (!password.equals(«12345»));

Здесь мы используем do..while, потому что значения переменной password еще не существует. Она инициализируется именно в цикле. При использовании обычного while ей сначала пришлось бы присвоить бессмысленное значение:

Scanner in = new Scanner(System.in);
String password = «»;
while (!password.equals(«12345»)) {
password = in.nextLine();
}

Изменение небольшое, но do..while позволяет сделать код более понятным и логичным. Другой распространенный тип цикла – цикл for. В общем виде он выглядит так:

for (счетчик; условие; инкремент)
// тело цикла
}

Цикл прекращается тогда, когда условие возвращает false. Если оно изначально ложно, то тело цикла не выполнится ни разу. Пример цикла, где выводится квадрат каждого числа от 1 до 20:

for (int i = 1; i <= 20; i++) {
System.out.println(i * i);
}

Ни одна из частей не является обязательной. Можно опустить вообще все три части внутри скобок – тогда цикл for станет бесконечным. Чтобы выйти из него, придется использовать инструкцию break:

for (;;) {
if (Math.random() > 0.9) break;
}

Цикл foreach является разновидностью цикла for. Ключевого слова foreach в Java нет – это просто удобное название для обозначения данного типа цикла. Пишется он так:

for (переменная : коллекция) {
// тело цикла
}

Данный цикл проходит по всем элементам коллекции и последовательно присваивает их в переменную. Важно, чтобы тип переменной совпадал с типом возвращаемых элементов.

Пример цикла foreach:

for (int num : numbers) {
System.out.println(num);
}

В цикле выше мы вывели в консоль все числа из массива numbers. Это удобный метод прохождения по коллекциям, который не требует создания отдельного счетчика и работы с индексами. Более того, не у всех коллекций индексы есть.

Коллекцией в данном случае будет любой объект, реализующий интерфейс java.lang.Iterable. Таким образом, у цикла while есть множество альтернатив. В каждой ситуации следует использовать самый подходящий тип цикла, чтобы код становился более понятным и удобным в работе.

Другие особенности цикла while

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

Оператор continue позволяет перейти на следующую итерацию, не выполняя тело цикла до конца. Например, при перечислении чисел от 1 до 100 можно пропустить все числа, которые делятся на 3 без остатка:

int counter = 1;

while (counter < 101) {
if (counter % 3 == 0) {
counter++;
continue;
}

System.out.println(counter++);
}

В свою очередь, оператор break прерывает выполнение цикла вообще. Допустим, при вводе определенной строки в терминал можно выходить из цикла явным образом:

Scanner in = new Scanner(System.in);
String input = «»;
int counter = 0;
while (counter < 100) {
input = in.nextLine();
if (input.equals(«stopword»)) break;
counter++;
}

Оцените статью
Образовательный портал WELCOME4U.RU
Добавить комментарий

Adblock
detector