Инструкция continue в Java
Помимо инструкции break, завершающей работу цикла,
существует также инструкция continue, запускающая новую
итерацию цикла. Данная инструкция иногда может быть полезна для
упрощения кода, хотя практически всегда задачу можно решить и
без нее. Давайте посмотрим на практическом примере.
Пусть у нас есть числа от 1 до 9. Давайте
переберем их циклом и числа, которые делятся на 2,
возведем в квадрат и выведем на экран, а числа, которые делятся
на 3, возведем в куб и выведем на экран.
Вот решение описанной задачи:
for (int num = 1; num <= 9; num++) {
if (num % 2 == 0) {
int res = num * num;
System.out.println(res);
} else if (num % 3 == 0) {
int res = num * num * num;
System.out.println(res);
}
}
Как вы видите, строчка вывода res повторяется два раза.
Давайте вынесем ее за if, вот так:
for (int num = 1; num <= 9; num++) {
int res = 0;
if (num % 2 == 0) {
res = num * num;
} else if (num % 3 == 0) {
res = num * num * num;
}
System.out.println(res); // вынесли вывод за условие
}
Теперь код, однако, работает немного не так: вывод переменной
res выполнится и для чисел, которые не прошли через
if. По условию задачи это не нужно.
Поправим проблему, добавив к нашему if еще условие
else, которое будет срабатывать для чисел, не делящихся
на 2 и на 3, и вызовем там инструкцию
continue, которая сразу же будет перебрасывать нас на
новую итерацию цикла:
for (int num = 1; num <= 9; num++) {
int res = 0;
if (num % 2 == 0) {
res = num * num;
} else if (num % 3 == 0) {
res = num * num * num;
} else {
continue; // перейдем на новую итерацию цикла
}
System.out.println(res); // выполнится, если делится на 2 или 3
}
Так удобно отбрасывать лишние значения в начале тела цикла. Из
чисел от 1 до 5 пропустим число 3:
for (int num = 1; num <= 5; num++) {
if (num == 3) {
continue;
}
System.out.println(num); // выведет 1, 2, 4 и 5
}
В строке "abcde" пропустим символ 'c':
String str = "abcde";
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if (ch == 'c') {
continue;
}
System.out.println(ch); // выведет a, b, d и e
}
Выведите на экран числа от 1 до 10, кроме
5.
Дан код:
String str = "program";
Выведите все символы, кроме буквы 'r'.
Напишите цикл, который выведет только четные числа от 1
до 100, пропуская нечетные с помощью continue.