ブロックからの脱出

last-modified: Dec./26th/2001

Java では "{" から "}" までのことをブロックと呼びます。構文上、ひとまとまりの制御単位を表します。いままでに if, switch, while, for ブロックを紹介してきました。本節では、これらのブロック内部から、途中で脱出する方法を紹介します。

continue / break / return

continue は当該ブロックの先頭へ制御を戻し、 break は当該ブロックから脱出します。繰り返しループ内部で利用すると、 continue はループを続けますが、 break はループを止めます。

break と似た動作をするものとして、 return があります。これは当該メソッドの実行を終了し、元の実行プロセスに制御を戻します。あるメソッドから別のメソッドが呼ばれたとき、呼ばれたメソッド内で return に出会うと、制御は呼んだメソッドに戻ります。

サンプル

簡単なサンプルで動作を確認しましょう。

continue

TestContinue.java:

class TestContinue{
	public static void main(String arg[]){
		for(int i=0;i<=5; i++){
			System.out.print(i+" Block Start...");
			if(i==Integer.parseInt(arg[0])){
				System.out.println("");
				continue;
			}
			System.out.println(i+" Block END...");
		}
		System.out.println("Program END...");
	}
}

for ループの中に if 文が入っています。 Integer.parseInt()Integer クラスのメソッドで、引数の文字列を整数に解釈します。従って、 if 条件文は、「コマンドライン引数とループ・カウンタが同じ値になる」と解釈できます。

C:\Java>javac TestContinue.java
C:\Java>java TestContinue 3
0 Block Start...0 Block END...
1 Block Start...1 Block END...
2 Block Start...2 Block END...
3 Block Start...
4 Block Start...4 Block END...
5 Block Start...5 Block END...
Program END...

continue; はブロック内で後続の処理を省略して、ブロックの頭に制御を戻します。

break

次は break; のサンプルです。上に挙げたサンプルの continue;break; に書き換えただけです。

TestBreak.java:

class TestBreak{
	public static void main(String arg[]){
		for(int i=0;i<=5; i++){
			System.out.print(i+" Block Start...");
			if(i==Integer.parseInt(arg[0])){
				System.out.println("");
				break;
			}
			System.out.println(i+" Block END...");
		}
		System.out.println("Program END...");
	}
}
C:\Java>javac TestBreak.java
C:\Java>java TestBreak 3
0 Block Start...0 Block END...
1 Block Start...1 Block END...
2 Block Start...2 Block END...
3 Block Start...
Program END...

break; はブロック内で後続の処理を省略して、ブロックから脱出します。従って、上の例では繰り返しが終了しています。

次は入れ子にされた多重ブロックからの脱出について説明します。



Copyright © 2001 SUGAI, Manabu. All Rights Reserved.