288

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

4

21 に答える 21

564

breakループをcontinue抜け、次の繰り返しにジャンプします。

于 2009-01-20T18:02:15.533 に答える
72
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: を選択し、その後にソース コードの Web アドレスのように異質に見えるコメントを続けます。

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

これは Joshua Bloch クイズからだと思います。:)

于 2012-05-21T23:12:41.543 に答える
34

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
于 2014-07-23T12:14:13.040 に答える
25

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

于 2009-01-20T18:02:19.997 に答える
8

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

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

于 2009-01-20T18:02:20.853 に答える
7

シンプルで正確な優れた答え。

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

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
于 2009-01-20T18:12:13.207 に答える
6

continue現在実行中のループをスキップして次のループMOVESしますが、ループからMOVES OUTし、ループのの次のステートメントを実行します。次のコードを使用して違いを学びました。さまざまな出力を確認してください。break

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
于 2015-04-22T13:39:42.567 に答える
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
于 2009-01-20T18:14:52.873 に答える
3

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

于 2009-01-20T18:02:46.203 に答える
2

簡単な例:

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
于 2009-01-20T18:18:08.340 に答える
2

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

于 2009-01-20T18:04:21.940 に答える
1

まず、Java にはブレーク、ラベルなしブレーク、ラベル付き継続、ラベルなし継続の 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 チュートリアルを参照してください。ここにリンクの説明を入力してください。

于 2014-12-09T14:15:37.917 に答える
1

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:;
}
于 2009-01-20T18:10:55.017 に答える
0
for (int i = 1; i <= 3; i++) {
        if (i == 2) {

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

このコードを netbeans で試してみると、ブレークとコンティニューの違いがわかります

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

            break;
        }
        System.out.print("[i:" + i + "]");
于 2013-12-14T22:11:50.603 に答える
0

簡単に言えば、ブレークは現在のループを終了し、ループ終了後の最初の行で実行を継続します。continue はループ条件に戻り、ループを実行し続けます。

于 2009-01-20T18:02:53.787 に答える
0

継続と中断の違いを理解するための簡単なプログラム

いつ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
于 2015-11-26T00:54:16.613 に答える
-1

つまり、for または while ループの中にいます。ブレークの使用; あなたをループの外に出します。のように、それは終了します。継続する; 次の反復を実行するように指示します。

if ステートメントで continue を使用しても意味がありませんが、中断します。便利です。switch... の場合は、常に break を使用してください。ケースを終了するため、別のケースを実行しません。

于 2009-01-20T18:13:57.553 に答える