<概要> 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++ が実行されます。