Бесконечный for (Java) цикл

бесконечный for (Java) цикл Как в практически любом языке программирования, в Java имеются инструменты, предназначенные для многократного повторения определенного фрагмента кода. Такие инструменты принято называть циклами. В Java циклы представлены такими операторами, как while и for, а также их разновидностями. Циклы, как правило, используются для прохода по одномерным и многомерным массивам и структурам данных для нахождения определенны элементов и дальнейших операций с ними. Но это далеко не единственный способ применения такого инструмента, как цикл Java. По мере их рассмотрения будут приводиться примеры использования.

Цикл while Java: описание и примеры

While является основополагающим оператором цикла в Java. Заключенный в его теле фрагмент кода будет повторяться до тех пор, пока условие выражения, заключенного в скобки после него, будет удовлетворять истинному значению. Оператор while в общем виде имеет следующий вид: while (условие){//тело цикла}. Как только значение логического условия перестанет быть истинным, код, заключенный в тело цикла, перестанет выполняться. Управление передастся строке, которая идет сразу после него. Если в теле цикла заключен всего один оператор, то можно не ставить фигурные скобки. Однако, среди программистов считается хорошим тоном всегда ставить их. Давайте разберем пример:

While loop

Public class whileDemo (

Public static void main (String [] args)  {

int count = 1;

System.out.println (“Printing Numbers from 1 to 10”);

while (count<=10) {

count=count+1;

System.out.println(count);

}

}

}

Изначально объявленная переменная count имеет значение 1. Далее мы видим логическое выражение, которое заключено в скобки после названия оператора. Если значение будет истинным, то цикл будет возвращать значение true до тех пор, пока значение переменной countне будет равно или меньше 10.С каждым проходом или итерацией значение переменной будет увеличиваться на 1 и выводится на консольный экран. Когда значение переменной достигло значения 11, цикл завершил работу. Если бы значение переменной count равнялось изначально 11, то тогда условие цикла было бы ложным. Программа даже не зашла бы в тело. Необходимо отметить, что синтаксис Java дает возможность использовать оператор While без тела. Рассмотрим следующий пример. Предположим, у вас есть две переменные: i=100 иj=200. Перед нами стоит задача вычислить программным путем их среднее арифметическое значение, для этой цели можно использовать «пустотелый» цикл while:

While (++i<- — j);

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

Цикл do-while

В предыдущих примерах если выражение условия возвращало значение false, то программа игнорировала тело цикла и продолжала дальнейшее выполнение. Но иногда возникают ситуации, когда выполнение кода, который содержится в теле цикла обязательно хотя бы один раз вне зависимости от истинности выражения условия. Иначе говоря, иногда бывает так, что необходимо проверять истинность условного выражения в начале, а не в конце цикла. Подобную функциональность может обеспечить разновидность цикла while с условным названием do-while. Он имеет такую форму: do {// тело цикла} while (условие). Как вы можете убедиться, сначала здесь идет выполнение тела цикла, а потом проверяется истинность условия. Так делается на каждой итерации. Приведенный выше код отработает примерно так же, как и в случае с while. Но если бы мы присвоили переменной count значение 11, тело цикла все равно выполнилось бы один раз, прежде чем оператор смог бы проверить истинность выражения.

Примеры и описание: for – Java цикл

Цикл for является универсальной и эффективной языковой формой в языке Java. Вплоть до пятой версии JavaSDK существовала только одна традиционная форма оператора for. После нее появилась новая – foreach. В этом разделе речь пойдет о традиционной форме оператора. Циклforвjava имеетследующийвид:

for (inti=0; i<10; i++) {//Loop statements to be executed

}

Прежде чем управление передастся коду в конце цикла, выполняется инициализация переменной i, которая выступает в качестве счетчика. Далее необходимо проверить условное выражение, в котором счетчик сравнивался с определенным значением. Если программа возвращает true, тело цикла выполняется. При этом значение счетчика меняется на заданный заранее шаг и снова проверяется условное выражение. Так происходит до тех пор, пока условие не станет ложным. Для лучшего понимания приведем пример того, как работает цикл for Java.

package loops;

public class ForLoops {

public static void main (String [] args) {

intloopVal:

intend_value =11;

for [loopVal = 0; loopVal<end_value; loopVal++} {

system.out.pritnIn (“Loop Value = ” +loopVal);

}

}

}

Как вы видите, в качестве счетчика используется переменная loop Val. После выполнения каждой итерации цикла значение переменной будет прирастать на 1. Это будет происходить до тех пор,пока значение не достигнет 11. Обратите внимание на такой момент: управляющую переменную можно объявлять и за пределами оператора for. Однако если вы больше нигде не собираетесь использовать эту переменную кроме как в цикле, рекомендуется объявлять ее непосредственно в операторе. Необходимо учитывать, что переменная, объявленная в самом операторе имеет в пределах самого цикла область видимости. Иногда возникают ситуации, в которых требуется объявить несколько переменных, управляющих циклом. Цикл for Java позволяет указывать через запятую две и более переменные. Делать это следует как при их инициализации, так и при итерации. Оператор в этом случае будет иметь следующий вид: for (inti=1, intj=10; i<j; ++I, —j){}. В этом случае значение переменной i при каждой итерации будет увеличиваться на 1. Значение переменной j будет уменьшаться на 1. Итерации будут осуществляться до тех пор, пока i не станет больше или равно j.

Использование оператора for: особенности

Что же представляет собой цикл for? Это довольно гибкая конструкция, так как все три его части (условие, инициализацию, декремент/инкремент) можно использовать не по назначению. Так, например, вместо условного выражения с управляющей переменной, можно вставить любую логическую переменную. В приведенном выше примере можно заметить, что работа цикла не зависит от управляющей переменной i. Количество итераций зависит только от того, в какой момент времени переменная exit примет значение true. Кроме того, можно вообще убрать из цикла управляющую переменную. Это никак не отразиться на его работе. Хоть это и не самый верный способ программирования, но в некоторых случаях он бывает довольно полезным. Здесь главное предусмотреть ситуацию, при которой переменная примет значение, нужное для выхода из цикла. В таком случае цикл не станет бесконечным. For –цикл в Java может быть объявлен следующим образом: for (;;) {}. Это самый простой пример бесконечного цикла с условиями прерывания. Немного позже речь пойдет о том, как же прерывать циклы такого рода.

Цикл for each

В Java цикл foreach используется исключительно для последовательного перебора элементов массива или структуры данных и выполнения над ними повторяющихся операций. Ниже представлен пример данной формы оператора for:

For (Stringname :names) {

System.out.printIn (name);

}

}

В этом случае в качестве итерационной переменной объявлено name. Объявленный ранее массив строк names выступает в качестве второго аргумента оператора. Переменная name будет поочередно принимать значения каждого элемента массива, пока не будут извлечены все элементы. Стоит отметить, что тип переменной в этом случае должен быть совместимым с типом элементов, содержащихся в массиве. Переменная name также доступна исключительно для чтения. При попытке ее изменения будет изменен и сам элемент массива.

Операторы прерывания цикла

Всего известно три оператора прерывания цикла. Это continue, return и break. Два последних могут полностью прервать работу цикла. Оператор continue только прерывает работу текущей итерации. Если в своей коде вы умышленно используете бесконечный цикл, то данные операторы обязательно должны использоваться. Рассмотрим простой вариант использования оператора break.

PackageConditionalStatements;

PublicclassBreakStatement {

Public static void main (String [] args) {

int I;

for (i=0; i<=10; i++) {

if (i==7) {

System.out.format (“\n Coming out from for loop Where i=%d\n”);

Break;

}

System.out.format (“ %d “, i);

}

}

}

В данном операторе предусмотрено 11 итераций, но выполниться только 8, так как когда счетчик i будет равен 7, сработает условие, имеющее в своем теле оператор break. Аналогичным образом работает и оператор return. Отличие в этом случае состоит в том, что он не только обеспечивает выход из цикла, но из метода, в который помещен данный цикл.

Использование breakв качестве goto

Необходимо учитывать, что оператор breakпрерывает работу только того цикла, в теле которого он непосредственно находится. То есть, если вы используете оператор во вложенном цикле, то внешний цикл своей работы не прекратит. Для этого можно использовать оператор break в качестве формы goto. В таком варианте этот оператор обычно используется в связке с меткой, позволяющей организовать не только выход из циклов, но и из любого блока кода. Метка – это именованный соответствующим образом идентификатор с двоеточием после него. Объявляется метка в начале помечаемого блока. Чтобы прервать выполнение блока, необходимо объявить в нужном месте: break имя_метки.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *