Операторы break, continue. Примеры использования
Содержание
- 1. Оператор break. Особенности применения. Общая форма
- 2. Оператор break с меткой. Особенности применения. Ключевое слово goto
- 3. В каких операторах можно использовать оператор break?
- 4. Оператор continue. Особенности применения. Общая форма
- 5. Оператор continue с меткой
- 6. В каких операторах можно применять оператор continue?
- 7. Примеры решения задач, в которых используется оператор break
- 8. Пример использования оператора break с меткой
- 9. Примеры решения задач, в которых используется оператор continue
- 10. Примеры решения задач, в которых используется оператор continue с меткой
- 11. Какие преимущества дает использование операторов break и continue в программах
- 12. Какое отличие между оператором break с меткой и оператором continue с меткой
- Связанные темы
Поиск на других ресурсах:
1. Оператор break. Особенности применения. Общая форма
Оператор break осуществляет выход из блока фигурных скобок { } оператора цикла или оператора switch и передает управление следующему оператору в программе. Если используются вложенные операторы, то оператор break осуществляет выход из самого внутреннего оператора.
Общая форма оператора break следующая
break;
2. Оператор break с меткой. Особенности применения. Ключевое слово goto
Оператор break с меткой может применяться как аналог оператора goto, который присутствует в других языках программирования. В языке Java оператор goto не используется. Однако, ключевое слово goto есть зарезервированным.
Общая форма оператора break с меткой имеет следующий вид:
break labelName;
где labelName – это метка, которая соответствует кодовому блоку. Кодовый блок – это набор операторов, взятых в фигурные скобки { }.
Если в программе встречается оператор break с меткой, то происходит переход к метке, которая должна быть реализована в программе.
Общая форма объявления метки следующая
labelName: { // последовательность операторов // ... }
где labelName – имя метки. Имя метки задается также как и для любого идентификатора.
3. В каких операторах можно использовать оператор break?
Оператор break можно использовать во всех операторах цикла и операторе switch. Другими словами, оператор break не может быть использован за пределами цикла или оператора switch.
4. Оператор continue. Особенности применения. Общая форма
Оператор continue применяется в циклах. Оператор continue обеспечивает переход к следующей итерации в цикле.
Общая форма оператора continue имеет вид:
continue;
Чаще всего оператор continue вызывается при достижении некоторого условия в теле цикла.
5. Оператор continue с меткой
Оператор continue может быть реализован с меткой. В этом случае общая форма оператора continue следующая
continue labelName;
где labelName – имя метки, которая соответствует циклу, в котором реализован вызов с помощью оператора continue.
6. В каких операторах можно применять оператор continue?
Оператор continue можно применять только в циклах. Другими словами, оператор continue нельзя применять за пределами цикла.
7. Примеры решения задач, в которых используется оператор break
Пример 1. Определение наличия отрицательного числа в одномерном массиве.
// Определение наличия отрицательного числа в одномерном массиве int A[] = { 3, 5, -7, 20, 39, 12 }; boolean f_is = false; for (int i=0; i<A.length; i++) if (A[i]<0) // есть ли отрицательное число в массиве? { f_is = true; // если есть, то решение найдено break; // выход из цикла, дальнейшее выполнение цикла не имеет смысла } if (f_is) System.out.println("Отрицательное число есть в массиве."); else System.out.println("Отрицательного числа нет в массиве.");
Пример 2. Определение наличия заданного числа n в двумерном массиве размером 2*3. В данном примере оператор break вызывается два раза. Первый раз, когда нужно выйти из внутреннего цикла, в котором переменная j есть итератором. Второй раз, когда нужно выйти из внешнего цикла, в котором переменная i есть итератором.
// Определение наличия отрицательного числа в одномерном массиве int A[][] = { { 3, 5, -3 }, { 2, 8, 0 } }; boolean f_is = false; int n = 5; for (int i=0; i<A.length; i++) { for (int j=0; j<A[i].length; j++) if (A[i][j]==n) { f_is = true; // если число найдено, то выход из внутреннего цикла break; // дальнейшее выполнение не имеет смысла } if (f_is) break; // выход из внешнего цикла } if (f_is) System.out.println("Число есть в массиве."); else System.out.println("Числа нет в массиве.");
Если двумерный массив есть большим по размеру, то использование оператора break повышает скорость выполнения цикла.
8. Пример использования оператора break с меткой
Оператор break с меткой работает так же, как и оператор goto в других языках программирования. В языке Java оператор goto не используется. Однако, ключевое слово goto зарезервировано. Вместо goto используется оператор break с меткой с некоторыми ограничениями.
Задан двумерный массив целых чисел. Определить, есть ли в массиве отрицательные элементы. Ниже приведен фрагмент кода, решающий данную задачу.
// Оператор break с меткой int[][] A = { { 2, 5, 8, }, { 3, -7, 4 }, { -2, 1, 3 }, { -4, 2, 3 } }; boolean f_is = false; // метка с именем M1 M1: for (int i=0; i<A.length; i++) for (int j=0; j<A[i].length; j++) { k++; if (A[i][j]<0) { f_is = true; break M1; // полное завершение цикла, переход к следующему оператору // continue M1; - переход к следующей итерации внешнего цикла (счетчик i) } } if (f_is) System.out.println("В массиве A есть положительные элементы."); else System.out.println("В массиве A положительных элементов нет");
Перебор всех элементов двумерного массива осуществляется в двух вложенных циклах. Перед вызовом циклов помещена метка с именем M1. Если в цикле нижнего уровня (счетчик j) встречается команда
break M1;
то происходит выход с обоих циклов и переход к следующему оператору программы:
... if (f_is) System.out.println("В массиве A есть положительные элементы."); else System.out.println("В массиве A положительных элементов нет");
Если метку M1 разместить перед оператором if, например:
... M1: if (f_is) System.out.println("В массиве A есть положительные элементы."); else System.out.println("В массиве A положительных элементов нет");
то компилятор Java сгенерирует ошибку
Unresolved compilation problem: The label M1 is missing
так как в операторе break с меткой, метка может размещаться только перед циклом, в котором она используется.
9. Примеры решения задач, в которых используется оператор continue
Пример 1. Дано n. Написать фрагмент программного кода, который вычисляет следующую сумму S = 2 + 4 + … + 2·n.
Существует много способов решения данной задачи. В данном случае задача решается с использованием оператора continue.
int s=0; int n; n = 10; for (int i=1; i<=2*n; i++) { if (i%2==1) continue; // нечетные значения i пропустить s = s+i; // суммировать только парные значения i }
В строке
if (i%2==1) continue;
проверяется значение i. Если i нечетно (i%2==1), то происходит переход на следующую итерацию с помощью оператора continue. Таким образом, суммируются только парные значения i.
Пример 2. В заданном массиве чисел все положительные элементы умножить на 2. Для решения используется оператор continue.
// использование оператора continue double[] A = { 3.8, -2.5, 4.6, -1.8, -2.2, 5.6, 1.5 }; // в массиве A все положительные элементы умножить на 2 for (int i=0; i<A.length; i++) { // если элемент массива отрицательный, то переход к следующей итерации if (A[i]<0) continue; // иначе, умножить этот элемент на 2 A[i] = A[i] * 2; }
10. Примеры решения задач, в которых используется оператор continue с меткой
Пример 1. Демонстрируется использование оператора continue с меткой, которая размещена во вложенном цикле (внутреннем цикле). Метка имеет имя loop. В примере находится сумма элементов, которые размещены на главной диагонали матрицы A размера 5×5.
// суммировать элементы матрицы, которые размещены на главной диагонали // в этих элементах позиция в строке i равна позиции в столбце j int n = 5; // размерность матрицы double A[][] = { { 3.2, 4.1, 2.8, 3.4, 3.4 }, { 1.3, 4.3, 5.5, 0.4, 1.4 }, { 3.4, 4.7, 2.1, 3.4, 3.4 }, { 6.2, 4.1, 2.6, 2.4, 2.4 }, { 0.7, 7.1, 3.8, 1.4, 4.4 } }; double summ = 0; // во внутреннем цикле объявляется метка с именем loop for (int i=0; i<n; i++) loop: for (int j=0; j<n; j++) { // если не главная диагональ, то переход на следующую итерацию if (i!=j) continue loop; summ += A[i][j]; }
Пример 2. Демонстрируется использование оператора continue с меткой, которая размещена на внешнем (верхнем) цикле. В программе определяется количество строк массива A, в которых есть отрицательные элементы.
// суммировать элементы матрицы, которые размещены на главной диагонали // в этих элементах позиция в строке i равна позиции в столбце j int n = 0; // количество строк, в которых есть отрицательные элементы double A[][] = { { 3.2, -4.1, 2.8, 3.4, 3.4, 3.6, 4.8 }, { 1.3, 4.3, 5.5, 0.4, 1.4, 2.0, 1.0 }, { 3.4, -4.7, 2.1, -3.4, 3.4, 3.0, 5.5 }, { 6.2, 4.1, 2.6, 2.4, 2.4, 1.8, 1.9 }, { -0.7, 7.1, 3.8, 1.4, 4.4, 2.3, 4.0 } }; // объявляется метка с именем nextRow nextRow: for (int i=0; i<A.length; i++) for (int j=0; j<A[i].length; j++) { // если найден отрицательный элемент, то переход на следующую строку массива if (A[i][j]<0) { n++; // увеличить счетчик continue nextRow; } } System.out.println("n = " + n); // n = 3
Перебор всех элементов массива осуществляется с помощью двух вложенных циклов. Номер строки соответствует переменной i, номер столбца соответствует переменной j.
Если в i-й строке массива найден хотя бы один отрицательный элемент, то дальнейший перебор элементов этой строки не имеет смысла. Нужно переходить на следующую строку. Именно поэтому, здесь вызывается оператор continue с меткой, которая размещается на верхнем (внешнем цикле). Метка имеет название nextRow.
11. Какие преимущества дает использование операторов break и continue в программах
Использование break и continue дает следующие преимущества:
- в случае выполнения циклического процесса нет необходимости выполнять лишние итерации, если найдено искомое значение или достигнут нужный результат. Это дает повышение скорости выполнения программы;
- при преждевременном прекращении циклического процесса не искажается структура кода.
12. Какое отличие между оператором break с меткой и оператором continue с меткой
Операторы break с меткой и continue с меткой могут использоваться только тогда, когда в программе есть вложенные циклы. Оператор break с меткой осуществляет полный выход из всех вложенных циклов. Оператор continue с меткой осуществляет выход из текущего вложенного цикла и переход к следующей итерации внешнего цикла.
Связанные темы
- Оператор выбора switch. Вложенные операторы switch
- Циклы for, while, do..while. Примеры использования. Решение задач с использованием циклов