トップ 新規 編集 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

Javaの文法:制御文フロー制御

フロー制御

  • ループの処理の流れ(フロー)を変えるための構文である。

 break文

  • while文、for文などのループを中断するか、switch文のcaseに応じた処理を終了するさいに用いられる。ラベル付きとラベルなしがあり、ラベルなしであれば、そのbreak文が含まれるループを中断する。ラベルが付いている場合、多重ループであってもラベルが置かれたレベルまでのループをすべて中断する。

break文の抽象的な例:ラベルなし

<制御(ループ)文> {
	<処理>;
	[<条件式>] break;
}
  1. whileループなどの制御文があったときに、普通に<処理>が実行される
  2. <条件式>があり、その値が真になれば、<条件式>がなければそのまま、そのループを中断しループの外の次の処理に移る

break文の抽象的な例:ラベル付き

  • break文のためのラベルは多重ループの脱出のために用いる
    • 制御文の直前にラベルを置き、多重ループの内側でbreak ラベル;とした場合、ラベルのおかれた制御文までを一気に脱出する。ラベルのない場合、break文のおかれたループしか脱出しない。
  • ラベルなしのbreak文の抽象的な例
<制御(ループ)文1> {
	<制御(ループ)文2> {
		<処理>;
		[<条件式>] break;
	}
}
    • この場合には内側のbreak文では制御文2しか脱出しない
  • ラベルなしのbreak文の抽象的な例
<ラベル>:
<制御(ループ)文1> {
	<制御(ループ)文2> {
		<処理>;
		[<条件式>] break <ラベル>;
	}
}
    • この場合には内側のbreak文で制御文1まで脱出する

break文のサンプルプログラム

  • ループのbreak文
1
2
3
4
5
6
7
8
9
10
11
12
package sample.flow;

public class LoopBreak {
    public static void main(String[] args) {
        for(int i=0;i<10;i++) {
            System.out.println((i+1)+"回目 今の変数iの値は"+i);
            if(i==5) {
                break;    //i=5になった時点でループを中断する
            }
        }
    }
}
  • switch〜case文のbreak
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package sample.flow;

public class SimpleSwitch {
    public static void main(String[] args) {
        int x=2;
        switch(x) {
            case 0:
                System.out.println("変数xの値は0です。");
                break;    //明示的にbreak文を入れないとその次の処理も行われてしまう
            case 1:
                System.out.println("変数xの値は1です。");
                break;
            case 2:
                System.out.println("変数xの値は2です。");
                break;
            case 3:
            case 4:    //この場合、3でも4でも処理が行われる
                System.out.println("変数xの値は3か4です。");
                break;
            default:
                System.out.println("変数xの値は0から4以外です。");
        }
    }
}

 continue文

continue文の抽象的な例

<制御文> {
	[<条件式>] continue;
	<処理>;
}

continue文のサンプルプログラム

  • ループのcontinue文
1
2
3
4
5
6
7
8
9
10
11
12
package sample.flow;

public class SimpleContinue {
    public static void main(String[] args) {
        for(int i=0;i<10;i++) {
            if(i==5) {
                continue;    //i=5になった時はループをスキップする
            }
            System.out.println((i+1)+"回目 今の変数iの値は"+i);
        }
    }
}

 goto文

  • ラベル付きbreak文やcontinue文があれば使う必要がないため、ここでは省略する

 return文

  • return文については関数(メソッド)で扱う

 課題

  1. 変数iと変数jを用いて、iが1から100まで1ずつ増加し、jが1から100まで2ずつ増加するときの、すべてのi*jの値の合計値を算出するプログラムを書きなさい。
  2. 上記1.のプログラムのiが「4の倍数」のときはi*jを加算しない修正を加えなさい。
  3. 上記2.のプログラムの途中ですべてのi*jの合計値が1000を超えた時点で、その合計値を表示し終了するような修正を加えなさい。
LoopBreak.java SimpleContinue.java

最終更新時間:2016年04月28日 10時30分57秒