Разница между перерывом и продолжением выписки - PullRequest
235 голосов
/ 20 января 2009

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

Ответы [ 21 ]

3 голосов
/ 20 января 2009

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

2 голосов
/ 29 сентября 2017

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

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

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

        if(i==3){

           continue;

        }
       System.out.println(i);
     }

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

Теперь рассмотрите этот код

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


            if(i==3){

                break;

            }
            System.out.println(i);
         }

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

В этом основная разница в продолжении и разрыве.

2 голосов
/ 20 января 2009

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

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
2 голосов
/ 20 января 2009

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

1 голос
/ 09 декабря 2014

Во-первых, я думаю, вы должны знать, что в 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");
    }
}

Оператор без метки завершает работу самого внутреннего переключателя для оператора while, 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's in the string.");
}

Незаписанный оператор continue пропускает текущую итерацию оператора 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: введите описание ссылки здесь

1 голос
/ 20 января 2009

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

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:;
}
0 голосов
/ 16 марта 2017

Продолжить Statment остановить итерацию и начать следующую итерацию Пример:

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 + "]");
    }

и Break Statment останавливают цикл или выход из цикла

0 голосов
/ 26 ноября 2015

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

Когда используется 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
0 голосов
/ 15 декабря 2013
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 + "]");
0 голосов
/ 20 января 2009

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

...