Как выйти из цикла while java

Как выйти из цикла while в Java?

Каков наилучший способ выйти/завершить цикл while в Java?

Например, мой код в настоящее время выглядит следующим образом:

Однако, если ваш код выглядит точно , как вы указали, вы можете использовать обычный цикл while и изменить условие на obj != null :

break — это то, что вы ищете:

в качестве альтернативы, реструктурируйте ваш цикл:

Поиск конструкции while. do с while(true) в моем коде заставил бы мои глаза кровоточить. Вместо этого используйте стандартный цикл while :

И взгляните на ссылку, которую Якоби предоставил в своем ответ , и на эту тоже. Шутки в сторону.

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

действительны. Условия проверяются на каждой итерации цикла. Как только один не совпадает, цикл while () завершается. Вы также можете использовать перерыв;

Взгляните на Java ™ Tutorials от Oracle.

Но в основном, как сказал dacwe , используйте break .

Если вы можете, часто яснее избегать использования break и ставить проверку как условие цикла while или использовать что-то вроде цикла do while. Это не всегда возможно, хотя.

если вы напишите while (true). это означает, что цикл не остановится ни в одной ситуации, чтобы остановить этот цикл, вы должны использовать оператор break между блоком while.

Вы можете использовать "перерыв", уже упомянутый в ответах выше. Если вам нужно вернуть некоторые значения. Вы можете использовать "возврат", как показано ниже:

в этом случае это while относится к методу, который возвращает какие-то значения.

Циклы while и for

При написании скриптов зачастую встаёт задача сделать однотипное действие много раз.

Например, вывести товары из списка один за другим. Или просто перебрать все числа от 1 до 10 и для каждого выполнить одинаковый код.

Для многократного повторения одного участка кода предусмотрены циклы.

Цикл «while»

Цикл while имеет следующий синтаксис:

Код из тела цикла выполняется, пока условие condition истинно.

Например, цикл ниже выводит i , пока i < 3 :

Одно выполнение тела цикла по-научному называется итерация. Цикл в примере выше совершает три итерации.

Если бы строка i++ отсутствовала в примере выше, то цикл бы повторялся (в теории) вечно. На практике, конечно, браузер не позволит такому случиться, он предоставит пользователю возможность остановить «подвисший» скрипт, а JavaScript на стороне сервера придётся «убить» процесс.

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

Например, while (i) – более краткий вариант while (i != 0) :

Если тело цикла состоит лишь из одной инструкции, мы можем опустить фигурные скобки <…>:

Цикл «do…while»

Проверку условия можно разместить под телом цикла, используя специальный синтаксис do..while :

Цикл сначала выполнит тело, а затем проверит условие condition , и пока его значение равно true , он будет выполняться снова и снова.

Такая форма синтаксиса оправдана, если вы хотите, чтобы тело цикла выполнилось хотя бы один раз, даже если условие окажется ложным. На практике чаще используется форма с предусловием: while(…) <…>.

Цикл «for»

Более сложный, но при этом самый распространённый цикл — цикл for .

Выглядит он так:

Давайте разберёмся, что означает каждая часть, на примере. Цикл ниже выполняет alert(i) для i от 0 до (но не включая) 3 :

Рассмотрим конструкцию for подробней:

часть
начало i = 0 Выполняется один раз при входе в цикл
условие i < 3 Проверяется перед каждой итерацией цикла. Если оно вычислится в false , цикл остановится.
шаг i++ Выполняется после тела цикла на каждой итерации перед проверкой условия.
тело alert(i) Выполняется снова и снова, пока условие вычисляется в true .

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

То есть, начало выполняется один раз, а затем каждая итерация заключается в проверке условия, после которой выполняется тело и шаг.

Если тема циклов для вас нова, может быть полезным вернуться к примеру выше и воспроизвести его работу на листе бумаги, шаг за шагом.

Вот в точности то, что происходит в нашем случае:

В примере переменная счётчика i была объявлена прямо в цикле. Это так называемое «встроенное» объявление переменной. Такие переменные существуют только внутри цикла.

Вместо объявления новой переменной мы можем использовать уже существующую:

Пропуск частей «for»

Любая часть for может быть пропущена.

Для примера, мы можем пропустить начало если нам ничего не нужно делать перед стартом цикла.

Можно убрать и шаг :

Это сделает цикл аналогичным while (i < 3) .

А можно и вообще убрать всё, получив бесконечный цикл:

При этом сами точки с запятой ; обязательно должны присутствовать, иначе будет ошибка синтаксиса.

Прерывание цикла: «break»

Обычно цикл завершается при вычислении условия в false .

Но мы можем выйти из цикла в любой момент с помощью специальной директивы break .

Например, следующий код подсчитывает сумму вводимых чисел до тех пор, пока посетитель их вводит, а затем – выдаёт:

Директива break в строке (*) полностью прекращает выполнение цикла и передаёт управление на строку за его телом, то есть на alert .

Вообще, сочетание «бесконечный цикл + break » – отличная штука для тех ситуаций, когда условие, по которому нужно прерваться, находится не в начале или конце цикла, а посередине.

Переход к следующей итерации: continue

Директива continue – «облегчённая версия» break . При её выполнении цикл не прерывается, а переходит к следующей итерации (если условие все ещё равно true ).

Её используют, если понятно, что на текущем повторе цикла делать больше нечего.

Например, цикл ниже использует continue , чтобы выводить только нечётные значения:

Для чётных значений i , директива continue прекращает выполнение тела цикла и передаёт управление на следующую итерацию for (со следующим числом). Таким образом alert вызывается только для нечётных значений.

Цикл, который обрабатывает только нечётные значения, мог бы выглядеть так:

С технической точки зрения он полностью идентичен. Действительно, вместо continue можно просто завернуть действия в блок if .

Однако мы получили дополнительный уровень вложенности фигурных скобок. Если код внутри if более длинный, то это ухудшает читаемость, в отличие от варианта с continue .

Обратите внимание, что эти синтаксические конструкции не являются выражениями и не могут быть использованы с тернарным оператором ? . В частности, использование таких директив, как break/continue , вызовет ошибку.

Например, если мы возьмём этот код:

…и перепишем его, используя вопросительный знак:

…то будет синтаксическая ошибка.

Это ещё один повод не использовать оператор вопросительного знака ? вместо if .

Метки для break/continue

Бывает, нужно выйти одновременно из нескольких уровней цикла сразу.

Например, в коде ниже мы проходимся циклами по i и j , запрашивая с помощью prompt координаты (i, j) с (0,0) до (2,2) :

Нам нужен способ остановить выполнение если пользователь отменит ввод.

Обычный break после input лишь прервёт внутренний цикл, но этого недостаточно. Достичь желаемого поведения можно с помощью меток.

Метка имеет вид идентификатора с двоеточием перед циклом:

Вызов break <labelName> в цикле ниже ищет ближайший внешний цикл с такой меткой и переходит в его конец.

В примере выше это означает, что вызовом break outer будет разорван внешний цикл до метки с именем outer , и управление перейдёт со строки, помеченной (*) , к alert(‘Готово!’) .

Можно размещать метку на отдельной строке:

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

Метки не дают возможности передавать управление в произвольное место кода.

Например, нет возможности сделать следующее:

Вызов break/continue возможен только внутри цикла, и метка должна находиться где-то выше этой директивы.

Итого

Мы рассмотрели 3 вида циклов:

  • while – Проверяет условие перед каждой итерацией.
  • do..while – Проверяет условие после каждой итерации.
  • for (;;) – Проверяет условие перед каждой итерацией, есть возможность задать дополнительные настройки.

Чтобы организовать бесконечный цикл, используют конструкцию while (true) . При этом он, как и любой другой цикл, может быть прерван директивой break .

Если на данной итерации цикла делать больше ничего не надо, но полностью прекращать цикл не следует – используют директиву continue .

Обе этих директивы поддерживают метки, которые ставятся перед циклом. Метки – единственный способ для break/continue выйти за пределы текущего цикла, повлиять на выполнение внешнего.

Заметим, что метки не позволяют прыгнуть в произвольное место кода, в JavaScript нет такой возможности.

Как выйти из цикла while в Java?

Каков наилучший способ выхода/завершения цикла while в Java?

Например, мой код в настоящее время выглядит следующим образом:

ОТВЕТЫ

Ответ 1

Однако, если ваш код выглядит точно так, как вы указали, вы можете использовать обычный цикл while и изменить условие на obj != null :

Ответ 2
Ответ 3

break — это то, что вы ищете:

реструктурируйте свою петлю:

Ответ 4

Поиск конструкции while. do с while(true) в моем коде заставит мои глаза кровоточить. Вместо этого используйте стандартный цикл while :

И посмотрите ссылку Yacoby, предоставленную в его , и этот тоже. Шутки в сторону.

Ответ 5

Взгляните на Java ™ Tutorials от Oracle.

Но в основном, как dacwe сказал, используйте break .

Если вы часто можете избежать использования break и поставить проверку как условие цикла while или использовать что-то вроде цикла while. Это не всегда возможно.

Ответ 6

Вы можете выполнить несколько логических тестов состояния в рамках проверки while(), используя те же правила, что и в любой логической проверке.

. Условные проверяются на каждой итерации по петле. Как только один не будет соответствовать, цикл while() будет завершен. Вы также можете использовать break;

Ответ 7

Вы можете использовать "break", уже упомянутый в ответах выше. Если вам нужно вернуть некоторые значения. Вы можете использовать "return", как показано ниже:

в этом случае это пока находится под методом, возвращающим какие-то значения.

Ответ 8

если вы пишете while (true). это означает, что цикл не остановится в любой ситуации, чтобы остановить этот цикл, вам нужно использовать оператор break между блоком.

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

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