Управление потоком Java: инструкции break и continue
Условные операторы и циклы являются очень важным инструментом в программировании. Существует не так много вещей, которые мы могли бы сделать с кодом, который может выполняться только построчно.
Вот что означает “управление потоком” – руководство выполнением нашей программы, вместо того, чтобы позволять ей выполняться построчно независимо от каких-либо внутренних или внешних факторов. Каждый язык программирования поддерживает ту или иную форму управления потоком, если не явно с помощью if s и для s или аналогичных операторов – тогда он неявно предоставляет нам инструменты для создания таких конструкций, т. Е. Языки программирования низкого уровня обычно достигают того, что влияет на множество команд go-to .
Циклы были концепцией, используемой задолго до того, как компьютерное программирование вообще стало чем – то, но первым человеком , использовавшим программный цикл, была Ада Лавлейс, широко известная под своей девичьей фамилией Байрон, при вычислении чисел Бернулли , еще в 19 веке.
В Java существует несколько способов управления потоком кода:
- утверждения if и if-else
- операторы переключения
- операторы while и do-while
- для и улучшено для заявлений
- прервите и продолжите выступления
перерыв
Оператор break является одним из “операторов перехода” Java, поскольку он переносит выполнение кода в другую часть кода. Мы уже видели ключевое слово break , используемое в операторе switch . Мы вернемся к нему здесь, наряду с другими вариантами использования:
- Его можно использовать для остановки выполнения случая switch оператора, вместо того, чтобы позволять ему продолжать выполнение кода и для следующих случаев
- Его можно использовать для выхода из цикла до того, как он завершит все свои итерации, или как форму выхода из целенаправленно созданных бесконечных циклов
- Его можно использовать в качестве приемлемой формы оператора “переход”, когда у нас есть несколько вложенных циклов
Первые два относительно похожи, так как оба используются для преждевременного завершения выполнения одного или нескольких блоков кода:
Как мы видим, цикл for выполнялся как обычно, пока не столкнулся с оператором break , после чего Java прекратила выполнение цикла и продолжила выполнение в первой строке после цикла for .
Вот еще один пример:
Этот цикл будет продолжать спрашивать пользователя, хочет ли он выйти из цикла , пока он не ответит соответствующими символами, где мы выходим из цикла, используя break , или завершаем программу с помощью Ctrl + C .
По умолчанию оператор break выходит только из самого внутреннего цикла, в котором он находится.
Если бы мы хотели найти первую позицию, в которой определенный элемент может быть найден в матрице, и мы хотели вырваться из циклов, как только мы его нашли (аналогично примеру с массивом выше), написание следующего не сработало бы:
Мы видим, что цикл продолжал выполняться даже после нахождения 4 в матрице, после заикания в строке, в которой было расположено 4. Это происходит потому, что break вышел только из самого внутреннего цикла, т. Е. Он перестал повторять текущую строку и перешел к следующей. Кроме того, наша задача состояла в том, чтобы найти первое вхождение 4 в матрице, и таким образом мы вернем последнее вхождение 4 в нашей матрице.
Именно здесь в игру вступают помеченные утверждения , которые мы рассмотрим далее.
Помеченные Утверждения
Помеченные операторы могут использоваться вместе с операторами break или continue для имитации перехода к .
Метки могут быть применены к любому блоку кода между <> , для , для каждого , в то время как , делать-в то время как , если и переключить операторы, а также выражения, назначения, возврат операторы, попытка блоки и бросок операторы. Затем мы используем их с операторами break и continue .
Метки работают путем применения идентификатора к конструкции:
Git Essentials
Ознакомьтесь с этим практическим руководством по изучению Git, содержащим лучшие практики и принятые в отрасли стандарты. Прекратите гуглить команды Git и на самом деле изучите это!
Затем мы можем вызвать эти помеченные операторы с помощью break или continue . Например, здесь мы обозначили наш внешний цикл как просто внешний . Чтобы выйти из двух или более вложенных циклов, мы разрываем внешний цикл, вызывая метку:
Использование этого помеченного цикла вместо цикла в приведенном выше примере дает правильный результат и поведение:
Вы не можете использовать метку break , если break не находится в блоке кода, обозначенном этой меткой, или это приведет к ошибке во время компиляции.
продолжить
Оператор continue просто пропускает остальную часть текущей итерации и переходит к следующей. Это полезно, когда мы хотим пропустить все (или часть) итерации, соответствующие определенным условиям, особенно если они требуют высокой производительности.
Для цикла while “пропуск” остальной части итерации означает прямой возврат к проверке условия перед следующей итерацией, а для цикла for это означает переход к части “шаг” цикла for (той части, где мы обычно увеличиваем/уменьшаем управляющую переменную), а затем проверяем условие перед следующей итерацией.
продолжить обычно используется с оператором if – > мы будем продолжать , если будет выполнено определенное условие. Мы используем это если для выполнения остальной части итерации, только если условие не выполнено, и пропускаем использование продолжить . Например
продолжить в нашем примере можно легко избежать, используя слегка измененную инструкцию if , главным образом, напечатав число, если i % 3 верно, в противном случае ничего не делая.
Общий совет, касающийся как разрыва , так и (особенно) продолжения , состоит в том, чтобы попытаться использовать их в основном в начале итераций в качестве некоторой формы предварительных условий, которые мы проверяем. Использование продолжить где-то в середине итерации-отличный способ вызвать ошибки, на устранение которых у вас уйдет некоторое время.
Конечно, вы также можете использовать продолжить с помеченными операторами:
Вывод
Управление потоком в коде необходимо практически для каждого приложения. Операторы, которые изменяют поток кода, являются фундаментальными строительными блоками, и каждый начинающий разработчик должен полностью контролировать/осознавать, как они работают.
Используя операторы break и continue , разработчики Java могут имитировать операторы go-to и при необходимости выходить из определенных циклов.
break в Java выход из цикла
Всем доброго времени! Данный код взят из книги Head First Java. При выполнении данного кода получается вывод в консоль в виде :"6 14". Если взять листик и ручку и выполнить этот код самому то получается ответ :"6 6". Я начал разбираться в чем же причина, и натолкнулся на то что цикл for со значением outer = 2; не запускается. Я изменил break в условии if на х=x-3 (тоесть сделал то же самое что и делал break не давая выполняться строке x=x+3), и получил результат:"6 6". Напрашивается вывод что из-за многократного выхода из цикла посредством оператора break, не запускается цикл. Простите возможно за глупый вопрос, если можно хотелось бы понять в чем причина такого поведения кода.
Кажется, ты их перепутал:
- break завершает цикл целиком
- continue завершает тело цикла, но продолжает сам цикл
Выкиньте x = x + 0; это всё равно ничего не даёт, только вносит неразбериху в ваш неокрепший ум. В таких случаях старайтесь искать проблему поэтапно,шаг за шагом. Нормальные люди это делают с помощью дебагера. предоставляю вам вариант курильщика.
-> Надеюсь это поможет вам понять как устроены вложенные циклы. Придумайте свои метки в выводе в консоль, которые смогут предоставить вам картину.
Всё ещё ищете ответ? Посмотрите другие вопросы с метками java break или задайте свой вопрос.
дизайн сайта / логотип © 2021 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2021.11.26.40833
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Циклы в Java – как создать и прервать
Цикл — это блок команд, который выполняется снова и снова, пока соблюдается определённое условие. Повторяемый фрагмент кода называют «телом цикла». Одно выполнение тела цикла называют итерацией.
В Яве можно работать с циклами нескольких типов — для этого есть следующие операторы:
while – цикл с предусловием – сначала проверяем условие, затем выполняем тело цикла;
do… while – цикл с постусловием – сначала выполняем один раз тело цикла, затем проверяем условие и, если оно соблюдается, продолжаем;
for – цикл со счётчиком – выполняется и при каждой итерации обновляет счётчик, пока условие в объявлении цикла соблюдается (т.е. проверка условия возвращает true);
сокращенный for (в других языках известен как foreach) – перебирает массив от первого элемента до последнего и на каждой итерации выполняет тело цикла.
Суть условия цикла – проверка выражения с одной или несколькими переменными: «Пока a<11, в каждой итерации выполняем тело цикла и увеличиваем "а" на 1». Но чему равно «а» при первом выполнении цикла?
Если мы используем конструкции с while, значение нужно указать перед началом цикла:
int a = 1;
System.out.println(a);
a++; //увеличиваем а на единицу
Если же переменная работает как счётчик цикла, а за его пределами не используется, её инициализируют прямо в условии. И тут же пишут, что с ней делать в конце каждой итерации. Всё это – в одну строку – с помощью for:
System.out.println(a);
Получаем тот же результат. Список можно было начать с нуля или с отрицательного значения – диапазон определяем сами.
Сокращенный вариант цикла for не содержит указаний ни на число повторов, ни на действия в конце шага. Цикл типа foreach используют для перебора массивов. От первого элемента нужно переходить к следующему – пока массив не кончится.
int[] ms = < 1, 2, 3, 4>; //создаем массив
int s = 0;
s *= i; //последовательно перемножаем элементы
System.out.println(s);
Вложенные циклы Java
Циклы можно вкладывать один в другой. При этом число повторов наружного и вложенных циклов умножается. Если внешний должен выполняться 5 раз и внутренний – 5, всего цикл будет выполнен 25 раз.