break文とcontinue文

<概要> break 文と continue 文を学びます。C言語、C++言語とちょっと違います。

例題7-2-1 多重ループを一気に抜ける。

○プログラム

public class BreakOuter{
  public static void main(String[] args){
    for(int i=0;i<3;i++){
      outer:
      for(int j=0;j<3;j++){
        for(int k=0;k<3;k++){
          if(k>1){
            break outer;
          }
          System.out.println("i="+i+" j="+j+" k="+k);
        }
      }
      System.out.println("break outer");
    }
  }
}


○実行結果

D:\atsushi\Java\p172>java BreakOuter
i=0 j=0 k=0
i=0 j=0 k=1
break outer
i=1 j=0 k=0
i=1 j=0 k=1
break outer
i=2 j=0 k=0
i=2 j=0 k=1
break outer
-- Press any key to exit (Input "c" to continue) --

○解説

一重ループを抜けるには、break 文を使います。
多重ループを抜けるには、ラベル付き break 文を使います。
ラベルはラベル付けするループの直前に書きます。
もしラベルの直後にループがない場合はコンパイルエラーになります。
また、ラベルの名前は好きに決められます。
答えではラベルの名前は outer としました。
いま、break outer が実行されると、
ラベル付けした for(int j=0;j<3;j++) ループを抜けて、
System.out.println("break outer"); の直前まで飛びます。

○補足

Java言語に goto 文はありません。
もっと正確に言えば、goto という名前は予約されているのですが、何の機能も持ちません。
更に、予約語ですから変数の名前に使うことも出来ません。

例題7-2-2 多重ループの繰り返しを次に進める。

○プログラム

public class ContinueOuter{
  public static void main(String[] args){
    for(int i=0;i<3;i++){
      outer:
      for(int j=0;j<3;j++){
        System.out.println("continue outer");
        for(int k=0;k<3;k++){
          if(k>1){
            continue outer;
          }
          System.out.println("i="+i+" j="+j+" k="+k);
        }
      }
    }
  }
}


○実行結果

D:\atsushi\Java\p173>java ContinueOuter
continue outer
i=0 j=0 k=0
i=0 j=0 k=1
continue outer
i=0 j=1 k=0
i=0 j=1 k=1
continue outer
i=0 j=2 k=0
i=0 j=2 k=1
continue outer
i=1 j=0 k=0
i=1 j=0 k=1
continue outer
i=1 j=1 k=0
i=1 j=1 k=1
continue outer
i=1 j=2 k=0
i=1 j=2 k=1
continue outer
i=2 j=0 k=0
i=2 j=0 k=1
continue outer
i=2 j=1 k=0
i=2 j=1 k=1
continue outer
i=2 j=2 k=0
i=2 j=2 k=1
-- Press any key to exit (Input "c" to continue) --

○解説

一重ループの繰り返しを次に進めるには、continue 文を使います。
多重ループの繰り返しを次に進めるには、ラベル付き continue 文を使います。
答えで、continue outer が実行されると、以降の処理を中断し、
ラベル付けした for(int j=0;j<3;j++) まで飛んで、j++ が実行されます。


戻る / ホーム