Перейти к содержимому

Что делает оператор continue

  • автор:

Оператор continue

Оператор continue используется в тех случаях когда требуется, чтобы повторение цикла осуществлялось с более раннего оператора в его теле.

В циклах while и do-while оператор continue вызывает передачу управления непосредственно условному выражению, управляющему циклом. В цикле for управление передается вначале итерационной части цикла for , а затем условному выражению.

Оператор continue следует использовать только в цикле.

В следующем примере выводятся на консоль только нечетные значения. Если значение четное, с помощью оператора continue заканчиваем итерацию цикла досрочно:

public class Continue < public static void main(String[] args) < for (int i = 0; i < 10; i++) < if (i % 2 == 0) < continue; >System.out.print(i + " "); > > >

Оператор continue также может использоваться с меткой. В следующем примере внешний цикл помечен меткой outer . При достижении блока кода continue outer; мы заканчиваем итерацию внешнего цикла. Если бы код был без метки, заканчивалась бы итерация внутреннего цикла.

public class ContinueLabel < public static void main(String[] args) < outer: for (int i = 0; i < 10; i++) < for (int j = 0; j < 10; j++) < if (j >i) < System.out.println(); continue outer; >System.out.print(" " + (i * j)); > > System.out.println(); > >

Презентацию с видео можно скачать на Patreon .

11.6. Java – Оператор continue

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

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

Синтаксис

Синтаксис одного оператора continue внутри любого цикла в Java:

continue; 

Описание процесса

Структура оператора continue в java, оператор continue

Пример

public class Test < public static void main(String args[]) < int [] numbers = ; for(int x : numbers ) < if( x == 30 ) < continue; >System.out.print( x ); System.out.print("\n"); > > > 

Будет получен следующий результат:

10 20 40 50 

Оглавление

  • 1. Java – Самоучитель для начинающих
  • 2. Java – Обзор языка
  • 3. Java – Установка и настройка
  • 4. Java – Синтаксис
  • 5. Java – Классы и объекты
  • 6. Java – Конструкторы
  • 7. Java – Типы данных и литералы
  • 8. Java – Типы переменных
  • 9. Java – Модификаторы
  • 10. Java – Операторы
  • 11. Java – Циклы и операторы цикла
  • 11.1. Java – Цикл while
  • 11.2. Java – Цикл for
  • 11.3. Java – Улучшенный цикл for
  • 11.4. Java – Цикл do..while
  • 11.5. Java – Оператор break
  • 11.6. Java – Оператор continue
  • 12. Java – Операторы принятия решений
  • 12.1. Java – Оператор if
  • 12.2. Java – Оператор if..else
  • 12.3. Java – Вложенный оператор if
  • 12.4. Java – Оператор switch..case
  • 12.5. Java – Условный оператор (? 🙂
  • 13. Java – Числа
  • 13.1. Java – Методы byteValue(), shortValue(), intValue(), longValue(), floatValue(), doubleValue()
  • 13.2. Java – Метод compareTo()
  • 13.3. Java – Метод equals()
  • 13.4. Java – Метод valueOf()
  • 13.5. Java – Метод toString()
  • 13.6. Java – Метод parseInt()
  • 13.7. Java – Метод Math.abs()
  • 13.8. Java – Метод Math.ceil()
  • 13.9. Java – Метод Math.floor()
  • 13.10. Java – Метод Math.rint()
  • 13.11. Java – Метод Math.round()
  • 13.12. Java – Метод Math.min()
  • 13.13. Java – Метод Math.max()
  • 13.14. Java – Метод Math.exp()
  • 13.15. Java – Метод Math.log()
  • 13.16. Java – Метод Math.pow()
  • 13.17. Java – Метод Math.sqrt()
  • 13.18. Java – Метод Math.sin()
  • 13.19. Java – Метод Math.cos()
  • 13.20. Java – Метод Math.tan()
  • 13.21. Java – Метод Math.asin()
  • 13.22. Java – Метод Math.acos()
  • 13.23. Java – Метод Math.atan()
  • 13.24. Java – Метод Math.atan2()
  • 13.25. Java – Метод Math.toDegrees()
  • 13.26. Java – Метод Math.toRadians()
  • 13.27. Java – Метод Math.random()
  • 14. Java – Символы
  • 14.1. Java – Метод Character.isLetter()
  • 14.2. Java – Метод Character.isDigit()
  • 14.3. Java – Метод Character.isWhitespace()
  • 14.4. Java – Метод Character.isUpperCase()
  • 14.5. Java – Метод Character.isLowerCase()
  • 14.6. Java – Метод Character.toUpperCase()
  • 14.7. Java – Метод Character.toLowerCase()
  • 14.8. Java – Метод Character.toString()
  • 15. Java – Строки
  • 15.1. Java – Метод charAt()
  • 15.2. Java – Метод compareTo()
  • 15.3. Java – Метод compareToIgnoreCase()
  • 15.4. Java – Метод concat()
  • 15.5. Java – Метод contentEquals()
  • 15.6. Java – Метод copyValueOf()
  • 15.7. Java – Метод endsWith()
  • 15.8. Java – Метод equals()
  • 15.9. Java – Метод equalsIgnoreCase()
  • 15.10. Java – Метод getBytes()
  • 15.11. Java – Метод getChars()
  • 15.12. Java – Метод hashCode()
  • 15.13. Java – Метод indexOf()
  • 15.14. Java – Метод intern()
  • 15.15. Java – Метод lastIndexOf()
  • 15.16. Java – Метод length()
  • 15.17. Java – Метод matches()
  • 15.18. Java – Метод regionMatches()
  • 15.19. Java – Метод replace()
  • 15.20. Java – Метод replaceAll()
  • 15.21. Java – Метод replaceFirst()
  • 15.22. Java – Метод split()
  • 15.23. Java – Метод startsWith()
  • 15.24. Java – Метод subSequence()
  • 15.25. Java – Метод substring()
  • 15.26. Java – Метод toCharArray()
  • 15.27. Java – Метод toLowerCase()
  • 15.28. Java – Метод toString()
  • 15.29. Java – Метод toUpperCase()
  • 15.30. Java – Метод trim()
  • 15.31. Java – Метод valueOf()
  • 15.32. Java – Классы StringBuilder и StringBuffer
  • 15.32.1. Java – Метод append()
  • 15.32.2. Java – Метод reverse()
  • 15.32.3. Java – Метод delete()
  • 15.32.4. Java – Метод insert()
  • 15.32.5. Java – Метод replace()
  • 16. Java – Массивы
  • 17. Java – Дата и время
  • 18. Java – Регулярные выражения
  • 19. Java – Методы
  • 20. Java – Потоки ввода/вывода, файлы и каталоги
  • 20.1. Java – Класс ByteArrayInputStream
  • 20.2. Java – Класс DataInputStream
  • 20.3. Java – Класс ByteArrayOutputStream
  • 20.4. Java – Класс DataOutputStream
  • 20.5. Java – Класс File
  • 20.6. Java – Класс FileReader
  • 20.7. Java – Класс FileWriter
  • 21. Java – Исключения
  • 21.1. Java – Встроенные исключения
  • 22. Java – Вложенные и внутренние классы
  • 23. Java – Наследование
  • 24. Java – Переопределение
  • 25. Java – Полиморфизм
  • 26. Java – Абстракция
  • 27. Java – Инкапсуляция
  • 28. Java – Интерфейсы
  • 29. Java – Пакеты
  • 30. Java – Структуры данных
  • 30.1. Java – Интерфейс Enumeration
  • 30.2. Java – Класс BitSet
  • 30.3. Java – Класс Vector
  • 30.4. Java – Класс Stack
  • 30.5. Java – Класс Dictionary
  • 30.6. Java – Класс Hashtable
  • 30.7. Java – Класс Properties
  • 31. Java – Коллекции
  • 31.1. Java – Интерфейс Collection
  • 31.2. Java – Интерфейс List
  • 31.3. Java – Интерфейс Set
  • 31.4. Java – Интерфейс SortedSet
  • 31.5. Java – Интерфейс Map
  • 31.6. Java – Интерфейс Map.Entry
  • 31.7. Java – Интерфейс SortedMap
  • 31.8. Java – Класс LinkedList
  • 31.9. Java – Класс ArrayList
  • 31.10. Java – Класс HashSet
  • 31.11. Java – Класс LinkedHashSet
  • 31.12. Java – Класс TreeSet
  • 31.13. Java – Класс HashMap
  • 31.14. Java – Класс TreeMap
  • 31.15. Java – Класс WeakHashMap
  • 31.16. Java – Класс LinkedHashMap
  • 31.17. Java – Класс IdentityHashMap
  • 31.18. Java – Алгоритмы Collection
  • 31.19. Java – Iterator и ListIterator
  • 31.20. Java – Comparator
  • 32. Java – Дженерики
  • 33. Java – Сериализация
  • 34. Java – Сеть
  • 34.1. Java – Обработка URL
  • 35. Java – Отправка Email
  • 36. Java – Многопоточность
  • 36.1. Java – Синхронизация потоков
  • 36.2. Java – Межпоточная связь
  • 36.3. Java – Взаимная блокировка потоков
  • 36.4. Java – Управление потоками
  • 37. Java – Основы работы с апплетами
  • 38. Java – Javadoc

Оператор continue

Оператор continue используется только в циклах. В операторах for , while , do while , оператор continue выполняет пропуск оставшейся части кода тела цикла и переходит к следующей итерации цикла. Рассмотрим фрагмент кода с оператором continue .

// пример использования оператора continue: int count = 0; do // начало цикла do while < continue; count++; >while ( count < 10 )

Посмотрите внимательно на выше приведенный пример, и Вы увидите, что do while бесконечный, так как каждая итерация цикла приводит к выполнению оператора continue , который пропускает операцию инкремента переменной-счётчика count и переходит на следующую итерацию цикла. Таким образом значение в переменной count не меняется, а значит и условие всегда будет истинным. Разработаем программу с оператором continue . Программа должна работать циклически. Внутри цикла необходимо организовать ввод чисел.Если введено число от 0 до 10 включительно, то необходимо напечатать квадрат этого числа, иначе используя оператор continue пропустить оператор возведения в квадрат введенного числа. При введении отрицательного числа осуществить выход из цикла.

// continue.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" #include using namespace std; int main(int argc, char* argv[]) < int in_number; // переменная для хранения введённого числа do < cout > in_number; // считываем введённое число в переменную in_number if ( in_number > 10 || in_number < 0 ) // если введённое число не входит в заданный интервал continue; // переход на следующую итерацию цикла do while cout while ( in_number >= 0 ); // пока введённое число больше либо равно нулю цикл будет работать system("pause"); return 0; >

Цикличность в программе организуем циклом с постусловием — do while . В цикле сначала считываем введённое число в переменную in_number , после чего, выполняется проверка условия в операторе if . Условие оператора условного выбора if будет истинным в том случае, если введённое число будет строго меньше нуля или строго больше 10. Заданный интервал — [0;10], число взятое из этого интервала возводится в квадрат. Истинность условия оператора if приводит к выполнению оператора continue в строке 15. А оператор continue пропускает операторы в строке 16 и переходит к проверке условия продолжения цикла do while . Условие в цикле будет истинно, пока вводимые числа будут строго больше 0. Результат работы программы показан на рисунке 3.

CppStudio.com

Enter number: 15 Enter number: 11 Enter number: 5 square = 25 Enter number: 9 square = 81 Enter number: -23 Для продолжения нажмите любую клавишу . . .

Рисунок 3 — Оператор continue в С++

Сначала вводились числа 15 и 11, эти числа не входят в заданный интервал и поэтому квадрат этих чисел не вычислялся. Числа 5 и 9 принадлежат заданному интервалу, а значит программа должна вычислить их квадраты. Когда ввели отрицательное число do while завершил свою работу. Теперь переделаем эту программу так, чтобы можно было обойтись без оператора continue , то есть напишем эквивалент оператору continue .

// continue.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" #include using namespace std; int main(int argc, char* argv[]) < int in_number; // переменная для хранения введённого числа do < cout > in_number; // считываем введённое число в переменную in_number if ( in_number = 0 ) // если введённое число входит в заданный интервал //continue; // переход на следующую итерацию цикла do while cout while ( in_number >= 0 ); // пока введённое число больше либо равно нулю цикл будет работать system("pause"); return 0; >

В эквивалентной программе без оператора continue код уменьшился на одну строку — закомментированная строка 15. Изменилось условие оператора условного выбора if . Строка 16 — это тело оператора if , а значит, если условие в if истинно будет выполнятся оператор в строке 16.

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

К сожалению, для данной темы пока нет подходящих задач. Если у вас есть таковые на примете, отправте их по адресу: admin@cppstudio.com. Мы их опубликуем!

CONTINUE

Работа оператора continue чем-то похожа на работу оператора break. Но вместо форсированного окончания continue переходит к следующей итерации цикла, пропуская оставшийся код цикла. Например, следующая процедура выводит только положительные числа:

В циклах while и do/while оператор continue вызывает переход к проверке условия и затем продолжает работу цикла. В случае for выполняется часть увеличения, затем проверяется условие и, наконец, выполняется само тело цикла. Предыдущий пример может быть изменен для вывода только 100 чисел следующим образом:

В следующем примере оператор continue используется для ускорения выхода из цикла путем форсирования проверки, выполненной ранее:

void code(void)
char done, ch;
done = 0;
while (!done) ch = getchar();
if (ch == '.') done = 1; continue;
>
putchar(ch+1); /* сдвиг алфавита на одну позицию */
>
>

Можно использовать данную функцию для кодирования сообщений, сдвигая все символы на 1 вверх, то есть 'a' станет 'b'. Функция завершает работу при обнаружении точки, и вывода на экран символа, соответствующего точке, не происходит, поскольку благодаря continue выполнение, минуя оператор вывода, переходит к условию проверки, которое обнаруживает, что done истинно, и вызывает выход.

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

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