Разница между фразой break и continue

Может ли кто-нибудь сказать мне разницу между операторами break и continue?

Ответ 1

break выходит из цикла, continue переходит к следующей итерации.

Ответ 2

Подробнее см. Ветвящиеся выражения:

break

Оператор break имеет две формы: помечен и немечен. Вы видели немеченой форме в предыдущем обсуждении оператора switch. Вы также может использовать немеченный разрыв для прекращения действия for, while или do-while loop [...]

Операция с немедленным отключением прерывает самый внутренний переключатель, while или do-while, но помеченный разрыв прерывает внешний утверждение.

continue

Оператор continue пропускает текущую итерацию a for, while, или do-while. Незамеченная форма пропускается до конца самой внутренней тело цикла и оценивает логическое выражение, которое управляет петля. [...]

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

Ответ 3

System.out.println ("starting loop:");
for (int n = 0; n < 7; ++n)
{
    System.out.println ("in loop: " + n);
    if (n == 2) {
        continue;
    }
    System.out.println ("   survived first guard");
    if (n == 4) {
        break;
    }
    System.out.println ("   survived second guard");
    // continue at head of loop
}
// break out of loop
System.out.println ("end of loop or exit via break");

Это приведет к следующему выводу:

starting loop:
in loop: 0
    survived first guard
    survived second guard
in loop: 1
    survived first guard
    survived second guard
in loop: 2
in loop: 3
    survived first guard
    survived second guard
in loop: 4
    survived first guard
end of loop or exit via break

Вы можете пометить блок, а не только для цикла, а затем разбить/продолжить от вложенного блока до внешнего. В некоторых случаях это может быть полезно, но в целом вы попытаетесь избежать такого кода, за исключением того, что логика программы намного лучше понять, чем в следующем примере:

first:
for (int i = 0; i < 4; ++i) 
{
    second:
    for (int j = 0; j < 4; ++j) 
    {
        third:
        for (int k = 0; k < 4; ++k) 
        {
            System.out.println ("inner start: i+j+k " + (i + j + k));
            if (i + j + k == 5)
                continue third;
            if (i + j + k == 7)
                continue second;
            if (i + j + k == 8)
                break second;
            if (i + j + k == 9)
                break first;
            System.out.println ("inner stop:  i+j+k " + (i + j + k));
        }
    }       
}

Потому что это возможно, это не значит, что вы должны его использовать.

Если вы хотите запутать свой код забавным способом, вы не выбираете значащее имя, а http: и следуете ему с комментарием, который выглядит чужим, как веб-адрес в исходном коде:

http://stackoverflow.com/questions/462373
for (int i = 0; i < 4; ++i) 
{
     if (i == 2) 
         break http;

Я думаю, это от Джошуа Блоха quizzle.:)

Ответ 4

Перерыв полностью завершает цикл и выполняет инструкции после цикла. Если Continue покидает текущую итерацию и выполняется со следующим значением в цикле.

Этот код объясняет все:

public static void main(String[] args) {
    for(int i=0;i<10;i++)
    {
        if (i==4)
        {
            break;
        }
        System.out.print(i+"\t");

    }
    System.out.println();
    for(int i=0;i<10;i++)
    {

        if (i==4)
        {
            continue;
        }
        System.out.print(i+"\t");
    }
}

Вывод:

0   1   2   3   
0   1   2   3   5   6   7   8   9

Ответ 5

break полностью выходит из цикла. continue пропускает инструкции после инструкции continue и продолжает цикл.

Ответ 6

Отличный ответ простой и точный.

Я бы добавил образец кода.

C:\oreyes\samples\java\breakcontinue>type BreakContinue.java

    class BreakContinue {

        public static void main( String [] args ) {

               for( int i = 0 ; i < 10 ; i++ ) {

                     if( i % 2 == 0) { // if pair, will jump
                         continue; // don't go to "System.out.print" below.
                     }

                     System.out.println("The number is " + i );

                     if( i == 7 ) {
                         break; // will end the execution, 8,9 wont be processed
                      }

               }
        }

    }

C:\oreyes\samples\java\breakcontinue>java BreakContinue
The number is 1
The number is 3
The number is 5
The number is 7

Ответ 7

Оператор

A break приводит к завершению инструкции, к которой он применяется (switch, for, do или while).

Оператор

A continue используется для завершения текущей итерации цикла и управления возвратом в оператор цикла.

Ответ 8

continue пропускает текущий цикл и MOVES TO следующий цикл, тогда как break MOVES OUT цикла и выполняет следующий оператор после цикла. Я узнал разницу, используя следующий код. Проверьте различные результаты. Надеюсь, что это поможет.

public static void main(String[] args) {
    for(int i = 0; i < 5; i++){
        if (i == 3) {
            continue;
        }
        System.out.print(i);
    }
}//prints out 0124, continue moves to the next iteration skipping printing 3

public static void main(String[] args) {
    for(int i = 0; i < 5; i++){
        if (i == 3) {
            break;
        }
        System.out.print(i);
    }
}//prints out 012, break moves out of the loop hence doesnt print 3 and 4

Ответ 9

Рассмотрим следующее:

int n;
for(n = 0; n < 10; ++n) {
    break;
}
System.out.println(n);

break заставляет цикл завершаться, а значение n равно 0.

int n;
for(n = 0; n < 10; ++n) {
    continue;
}
System.out.println(n);

continue заставляет программный счетчик возвращаться к первой строке цикла (условие проверено, а значение n - приращение), а окончательное значение n равно 10.

Следует также отметить, что break завершает выполнение цикла, в котором он находится:

int m;
for(m = 0; m < 5; ++m)
{
    int n;
    for(n = 0; n < 5; ++n) {
        break;
    }
    System.out.println(n);
}
System.out.println(m);

Выведет что-то под действие

0
0
0
0
0
5

Ответ 10

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

Ответ 11

Заявление о нарушении

Иногда необходимо завершить цикл до того, как цикл завершится полностью итерацией по всем значениям шага. Например, перебирайте список чисел, пока не найдете число, удовлетворяющее определенному условию. Или перебирать поток символов из файла, пока не будет прочитан определенный символ.

В следующем примере использовали простой цикл для печати значений от 0 до 9:

for(int i=0; i<10; i++) {
  System.out.println(i);
}

Вывод:

0
1
2
3
4
5
6
7
8
9

Теперь, если мы добавим оператор break при я == 4, наш код вырвется из цикла после того, как я будет равен 4. Вы можете использовать оператор break для выхода из цикла for, а также для циклов и циклов do-while. Оператор break выйдет из текущего цикла. Чтобы выйти из внешнего цикла из вложенного внутреннего цикла, вам нужно будет использовать метки с инструкцией break.

for(int i=0; i<10; i++) {
  System.out.println(i);
  if(i==4) {
    break;
  }
}

Вывод:

0
1
2
3
4

Продолжить выражение

Оператор Javas continue пропускает текущую итерацию цикла и переходит непосредственно к следующей итерации. После вызова инструкции continue в цикле for выполнение цикла будет выполнять значение шага и оценивать логическое условие перед продолжением следующей итерации. В следующем примере были напечатаны все значения от 0 до 9 в цикле, но мы пропускаем распечатку 4.

for(int i=0; i<10; i++) {
  if(i==4) {
    continue;
  }
  System.out.println(i);
}

Вывод:

0
1
2
3
5 <---- SKIPPED OVER 4 and continued with next loop iteration
6
7
8
9

Loop Label - Break Statement Вы можете использовать метки внутри вложенных циклов, указав, где вы хотите продолжить выполнение после выхода из внутреннего цикла. Обычно оператор break вырывается из самого внутреннего цикла, поэтому, когда вы хотите выйти из внешнего цикла, вы можете использовать метки для выполнения этого, по сути делая что-то похожее на инструкцию goto.

В следующем примере используются 3 цикла, все вложенные друг в друга. Поскольку theres никоим образом не полностью вырваться из самой внешней циклы изнутри самого внутреннего цикла, мы можем использовать метку "outer1", чтобы выполнить это, и указать метку рядом с оператором break.

outer1:
for(int i=0; i<5; i++) {
  for(int j=0; j<4; j++) {
    for(int k=0; k<2; k++) {
      System.out.println("[" + i + "][" + j + "][" + k + "]");
      if(j == 3) {
        break outer1;
      }
    }
  }
}

Вывод:

[0][0][0]
[0][0][1]
[0][1][0]
[0][1][1]
[0][2][0]
[0][2][1]
[0][3][0]

Обратите внимание, как отображается последняя строка: " 0 [0]", где находится j == 3, и мы называем "break outer1;" чтобы вырваться из самой внешней циклы.

Loop Labels - продолжить выражение

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

outer1:
for(int i=0; i<5; i++) {
  for(int j=0; j<4; j++) {
    for(int k=0; k<2; k++) {
      System.out.println("[" + i + "][" + j + "][" + k + "]");
      if(j == 3) {
        continue outer1;
    }
  }
}

[0][0][0]
[0][0][1]
[0][1][0]
[0][1][1]
[0][2][0]
[0][2][1]
[0][3][0] <---- CONTINUE WITH LABEL CALLED HERE
[1][0][0] <---- CONTINUES FROM NEXT ITERATION OF OUTER LOOP
[1][0][1]
[1][1][0]
[1][1][1]
[1][2][0]
[1][2][1]
[1][3][0] <---- CONTINUE WITH LABEL CALLED HERE
[2][0][0] <---- CONTINUES FROM NEXT ITERATION OF OUTER LOOP
[2][0][1]
[2][1][0]
[2][1][1]
[2][2][0]
[2][2][1]
[2][3][0] <---- CONTINUE WITH LABEL CALLED HERE
[3][0][0] <---- CONTINUES FROM NEXT ITERATION OF OUTER LOOP
[3][0][1]
[3][1][0]
[3][1][1]
[3][2][0]
[3][2][1]
[3][3][0] <---- CONTINUE WITH LABEL CALLED HERE
[4][0][0] <---- CONTINUES FROM NEXT ITERATION OF OUTER LOOP
[4][0][1]
[4][1][0]
[4][1][1]
[4][2][0]
[4][2][1]
[4][3][0]

Источник: Loops in Java - Ultimate Guide

Ответ 12

Оператор break содержит текущую структуру управления циклом и перескакивает за ней, а continue тоже выходит, но возвращается к условию цикла.

Ответ 13

Чтобы предотвратить выполнение какого-либо действия, если условие выполнено, следует использовать continue и выйти из цикла, если условие выполнено, следует использовать разрыв.

Например, в приведенном ниже коде.

 for(int i=0;i<5;i++){

        if(i==3){

           continue;

        }
       System.out.println(i);
     }

Вышеприведенный код напечатает результат: 0 1 2 4

NOw рассмотрим этот код

 for(int i=0;i<5;i++){


            if(i==3){

                break;

            }
            System.out.println(i);
         }

Этот код напечатает 0 1 2

Это основное отличие в продолжении и разломе.

Ответ 14

здесь семантика разрыва:

int[] a = new int[] { 1, 3, 4, 6, 7, 9, 10 };
// find 9
for(int i = 0; i < a.Length; i++)
{
    if (a[i] == 9) 
        goto goBreak;

    Console.WriteLine(a[i].ToString());      
}
goBreak:;

здесь семантика продолжения:

int[] a = new int[] { 1, 3, 4, 6, 7, 9, 10 };
// skip all odds
for(int i = 0; i < a.Length; i++)
{
    if (a[i] % 2 == 1) 
        goto goContinue;

    Console.WriteLine(a[i].ToString());      

goContinue:;
}

Ответ 15

Простой пример:

break выходит из цикла.

int m = 0;
for(int n = 0; n < 5; ++n){
  if(n == 2){
    break;
  }
  m++;
}

System.out.printl("m:"+m); // m:2

continue вернется к началу цикла.

int m = 0;
for(int n = 0; n < 5; ++n){
  if(n == 2){
    continue; // Go back to start and dont execute m++
  }
  m++;
}

System.out.printl("m:"+m); // m:4

Ответ 16

Во-первых, я думаю, вы должны знать, что есть два типа разрыва и продолжить в Java, которые помечены как разрыв, немеченый разрыв, помечены как продолжение и немеченое продолжение. Теперь я расскажу о различии между ними.

class BreakDemo {
public static void main(String[] args) {

    int[] arrayOfInts = 
        { 32, 87, 3, 589,
          12, 1076, 2000,
          8, 622, 127 };
    int searchfor = 12;

    int i;
    boolean foundIt = false;

    for (i = 0; i < arrayOfInts.length; i++) {
        if (arrayOfInts[i] == searchfor) {
            foundIt = true;
            break;//this is an unlabeled break,an unlabeled break statement terminates the innermost switch,for,while,do-while statement.
        }
    }

    if (foundIt) {
        System.out.println("Found " + searchfor + " at index " + i);
    } else {
        System.out.println(searchfor + " not in the array");
    }
}

Инструкция о немедленном разрыве завершает самый внутренний переключатель, в то время как оператор do-while.

public class BreakWithLabelDemo {
public static void main(String[] args) {
    search:
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 5; j++) {
            System.out.println(i + " - " + j);
            if (j == 3)
                break search;//this is an labeled break.To notice the lab which is search.
        }
    }
}

Отмеченный разрыв прерывает внешний оператор. Если вы javac и java это демо, вы получите:

0 - 0
0 - 1
0 - 2
0 - 3
class ContinueDemo {
public static void main(String[] args) {

    String searchMe = "peter piper picked a " + "peck of pickled peppers";
    int max = searchMe.length();
    int numPs = 0;

    for (int i = 0; i < max; i++) {
        // interested only in p's
        if (searchMe.charAt(i) != 'p')
            continue;//this is an unlabeled continue.

        // process p's
        numPs++;
    }
    System.out.println("Found " + numPs + " p in the string.");
}

Оператор немедленного продолжения пропускает текущую итерацию инструкции for, while, do-while.

public class ContinueWithLabelDemo {
public static void main(String[] args) {
    search:
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 5; j++) {
            System.out.println(i + " - " + j);
            if (j == 3)
                continue search;//this is an labeled continue.Notice the lab which is search
        }
    }
}

Обозначенный оператор continue пропускает текущую итерацию внешнего цикла, помеченного данной меткой, если вы javac и java демо, вы получите:

0 - 0
0 - 1
0 - 2
0 - 3
1 - 0
1 - 1
1 - 2
1 - 3
2 - 0
2 - 1
2 - 2
2 - 3

Если у вас есть какие-либо вопросы, вы можете увидеть учебник по Java: введите ссылку здесь

Ответ 17

Проще говоря: break прекратит текущий цикл и продолжит выполнение в первой строке после окончания цикла. continue переходит в состояние цикла и продолжает выполнение цикла.

Ответ 18

for (int i = 1; i <= 3; i++) {
        if (i == 2) {

            continue;
        }
        System.out.print("[i:" + i + "]");

попробуйте этот код в netbeans, вы поймете разницу между break и continue

for (int i = 1; i <= 3; i++) {
        if (i == 2) {

            break;
        }
        System.out.print("[i:" + i + "]");

Ответ 19

Простая программа для понимания разницы между продолжением и разрывом

Когда используется continue

    public static void main(String[] args) {
    System.out.println("HelloWorld");
    for (int i = 0; i < 5; i++){
        System.out.println("Start For loop i = " + i);
        if(i==2){
            System.out.println("Inside if Statement for i = "+i);
           continue;
        }
        System.out.println("End For loop i = " + i);
    }
    System.out.println("Completely out of For loop");
}


OutPut:
HelloWorld
Start For loop i = 0
End For loop i = 0
Start For loop i = 1
End For loop i = 1
Start For loop i = 2
Inside if Statement for i = 2
Start For loop i = 3
End For loop i = 3
Start For loop i = 4
End For loop i = 4
Completely out of For loop

Когда используется break

public static void main(String[] args) {
    System.out.println("HelloWorld");
    for (int i = 0; i < 5; i++){
        System.out.println("Start For loop i = " + i);
        if(i==2){
            System.out.println("Inside if Statement for i = "+i);
           break;
        }
        System.out.println("End For loop i = " + i);
    }
    System.out.println("Completely out of For loop");
}

Output:
HelloWorld
Start For loop i = 0
End For loop i = 0
Start For loop i = 1
End For loop i = 1
Start For loop i = 2
Inside if Statement for i = 2
Completely out of For loop

Ответ 20

Продолжить Установку прекратить итерацию и начать следующую проверку. Ex:

System.out.println("continue when i is 2:");
    for (int i = 1; i <= 3; i++) {
        if (i == 2) {
            System.out.print("[continue]");
            continue;
        }
        System.out.print("[i:" + i + "]");
    }

и "Разрыв" приостановить цикл или выйти из цикла

Ответ 21

чтобы вы были внутри цикла while или while. Использование break; выведет вас за пределы цикла. Как и в, это закончится. Продолжать; скажет ей запустить следующую итерацию.

Нет смысла использовать continue в if, но break; полезен. В случае с переключателем... всегда используйте break;, чтобы закончить случай, поэтому он не выполняет другой случай.