質問

breakcontinueステートメントの違いを教えてもらえますか?

役に立ちましたか?

解決

breakはループを終了し、continueは次の反復にジャンプします。

他のヒント

分岐ステートメント を参照してください。詳細とコードサンプルについては、次を参照してください。

break

  

breakステートメントには、ラベル付きとラベルなしの2つの形式があります。あなたは見た   switchステートメントの前の説明のラベルなし形式。君は   また、ラベルなしブレークを使用して、for、while、またはdo-whileを終了することもできます。   ループ[...]

     

ラベルのないbreakステートメントは、最も内側のスイッチを終了します。   while、またはdo-whileステートメント、ただしラベル付きブレークは外側を終了します   ステートメント。

continue

  

continueステートメントは、for、whileの現在の反復をスキップします   またはdo-whileループ。ラベルなしのフォームは、最も内側の最後までスキップします   ループの本体を制御し、   ループ。 [...]

     

ラベル付きcontinueステートメントは、指定されたラベルでマークされた外側のループの現在の反復をスキップします。

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

forループだけでなく、ブロックにラベルを付けて、ネストされたブロックから外側のブロックにブレーク/継続することができます。いくつかのケースでこれが役立つかもしれませんが、一般的には、プログラムのロジックが次の例よりもはるかに理解しやすいことを除いて、そのようなコードを避けるように試みます:

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;

これはジョシュア・ブロッホのクイズルからだと思います。 :)

Breakはループを完全に終了し、ループの後にステートメントを実行します。 一方、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

breakはループを完全に終了します。 continueは、 continue ステートメントの後のステートメントをスキップし、ループし続けます。

ブレイクステートメント

場合によっては<!>#8217; ループを終了する必要があるループはすべてのステップ値の完全な反復を完了しました。たとえば、特定の条件を満たす番号が見つかるまで、番号のリストをループします。または、特定の文字が読み取られるまで、ファイルの文字ストリームをループします。

次の例では、<!>#8217;単純なforループを使用して、0〜9の値を出力しています。

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

出力:

0
1
2
3
4
5
6
7
8
9

i == 4のときにbreakステートメントを追加すると、コードはiが4になるとループから抜け出します。breakステートメントを使用してforループ、whileループ、do-whileループから抜けることができます。 breakステートメントは、現在のループからのみ抜け出します。ネストされた内側のループから外側のループを抜け出すには、breakステートメントでラベルを使用する必要があります。

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

出力:

0
1
2
3
4

継続声明

Java <!>#8217; s continue statement は現在の反復をスキップしますループの次の反復に直接行きます。 forループでcontinueステートメントを呼び出した後、ループの実行はステップ値を実行し、次の反復に進む前にブール条件を評価します。次の例では、<!>#8217;ループ内の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

ループラベル-ブレークステートメント ネストされたループ内のラベルを使用できます。内側のループの。通常、breakステートメントは最も内側のループからのみブレークアウトするため、外側のループからブレークアウトする場合は、ラベルを使用してこれを実現し、基本的にgotoステートメントに似た処理を実行できます。

次の例では、3つのループを使用しています。これらはすべて互いにネストされています。 there <!>#8217; sは、最も内側のループの内側から最も外側のループを完全に抜け出す方法がないため、ラベル<!>#8220; outer1 <!>#8221;を使用できます。これを実現し、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]

表示される最後の行が<!>#8220; 0 [0]であることに注意してください。 <!>#8221; j == 3で、<!>#8217; s <!>#8220; break outer1; <!>#8221;最も外側のループから抜け出します。

ループラベル-ステートメントの継続

特定のポイントからループを継続するために、continueキーワードでラベルを使用することもできます。前の例を使用して、1行を変更してcontinue outer1;の代わりにbreak outer1;を指定すると、ループはループから抜け出すのではなく、outer1ラベルからループし続けます。 <=>が呼び出されるたびに、コードはループインデックスiを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]

出典: Javaのループ<!>#8211;究極のガイド

優れた回答シンプルかつ正確。

コードサンプルを追加します。

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

breakステートメントは、適用されるステートメント(switchfordo、またはwhile)を終了します。

continueステートメントは、現在のループの繰り返しを終了し、ループステートメントに制御を返すために使用されます。

continueは現在実行中の loop をスキップし、次へループ移動しますが、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

次のことを考慮してください:

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

breakステートメントはループから抜け出し(実行される次のステートメントは右中括弧の後の最初のステートメントです)、continueは次の反復でループを開始します。

breakステートメントは現在のループ制御構造に存在し、continueが終了してもループ状態に戻る間にその背後にジャンプします。

簡単な例:

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

条件が満たされた場合、何も実行されないようにするには、continueを使用する必要があります。条件が満たされた場合は、breakを使用する必要があります。

たとえば、下記のコードの場合。

 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を出力します

それが継続と中断の基本的な違いです。

breakのセマンティクスは次のとおりです。

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:;

continueのセマンティクスは次のとおりです。

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:;
}

まず、Javaにはbreak、unlabeled break、labeled continue、unlabeled continueの2種類のブレークとコンティニューがあることを知っておく必要があると思います。今、それらの違いについてお話します。

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

ラベルのないbreakステートメントは、最も内側のswitch、for、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チュートリアルを参照できます。ここにリンクの説明を入力

簡単に言えば、breakは現在のループを終了し、ループが終了した後、最初の行で実行を継続します。ループ状態に戻り、ループを実行し続けます。

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

continueとbreakの違いを理解する単純なプログラム

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

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

and Break Statmentは、ループを停止するか、ループを終了します

そのため、forまたはwhileループの内側にいます。ブレークを使用します。ループの外側に配置されます。のように、それは終了します。持続する;次の反復を実行するように指示します。

if文でcontinueを使用しても意味はありませんが、ブレークします。便利です。 switch ... caseでは、常にbreakを使用します。ケースを終了するため、別のケースを実行しません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top