1. breakизявление

Нека да разгледаме пример от предишния урок:

Код Обяснение
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
Програмата ще прочете ред от клавиатурата, докато въведете "exit".

Програмата чете редове от конзолата до exitвъвеждане на думата. Ако въведете тази дума, тогава променливата isExit става true, conditionто на цикъла ще бъде и цикълът ще приключи."!isExitfalse

Java има специален breakоператор, който ви позволява да опростите тази логика. Ако breakоператор се изпълни вътре в цикъл, цикълът завършва незабавно. Програмата ще започне да изпълнява оператора, който следва цикъла. Изявлението е много кратко:

break;

Ето How можете да използвате breakизраза, за да пренапишете примера, който току-що обсъдихме:

Код Обяснение
Scanner console = new Scanner(System.in);
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}
Програмата ще прочете ред от клавиатурата, докато въведете "exit".


2. продължавам изявление

Но breakтова не е единственият израз на Java, който ви позволява да контролирате поведението на цикъла. Java също има continueизявлението. Ако изпълните continueоператор вътре в цикъл, текущата итерация на цикъла ще приключи предсрочно.

Еднократното изпълнение на тялото на цикъла се нарича итерация на цикъла. Операторът continueпрекъсва текущата итерация на цикъла, но за разлика от breakоператора, той не завършва самия цикъл. Изявлението също е кратко:

continue;

Изявлението continueе супер удобно в цикъл, ако искаме да „пропуснем“ изпълнението на тялото на цикъла в определени ситуации.

Задача: Искаме да напишем програма, която отпечатва числа от 1до 20, но пропуска числа, които се делят на 7. Ето How може да изглежда този code.

Код Обяснение
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
     continue;
   System.out.println(i);
   i++;
}
Програмата показва числа от 1до 20. Ако числото се дели на 7(остатъкът от деленето на 7е 0), тогава пропускаме показването на числото.

Всъщност този code няма да работи , защото iще остане завинаги в номера 7. В края на краищата continueизразът пропуска други два израза: System.out.println(i)и i++. В резултат на това, след като достигнем стойността 7, променливата iще спре да се променя и ще бъдем в безкраен цикъл.

Написахме codeа по този начин нарочно, за да илюстрираме тази много често срещана грешка. Как да го поправим?

Тук има два варианта:

Вариант 1: промяна iпреди изпълнение continue, но след товаi % 7

Вариант 2: винаги увеличавайте iв началото на цикъла. Но тогава iначалната стойност трябва да бъде 0.

Опция 1 Вариант 2
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
   {
     i++;
     continue;
   }
   
   System.out.println(i);
   i++;
}
int i = 0;
while (i < 20)
{
   i++;
   if ( (i % 7) == 0)
     continue;
   System.out.println(i);
}