制御
概要
メソッド内は呼び出されると、制御文にしたがって処理が進みます。
分岐
if
書式
解説
例
if(条件式){
条件式がtureである場合の処理
}
[else{
条件式がfalseである場合の処理
}]
条件式がtureである場合の処理
}
[else{
条件式がfalseである場合の処理
}]
中括弧を省略した場合、1行のみが有効になります。
誤解を招きやすいのであまり望ましくない記述です。
項目 | 説明 |
条件式 | 評価対象です。boolean型である必要があります。 |
解説
条件式の値により、処理を分岐させる場合に使用します。
例
概要 | ソースコード | 実行結果 | 説明 |
分岐(真) |
if(true){ System.out.println("真"); } | 真 | 条件式が真の場合if直後のブロックが実行されます。 |
分岐(偽) |
if(false){ } else{ System.out.println("偽"); } | 偽 | 条件式が偽の場合else直後のブロックが実行されます。 |
switch
書式
解説
switch(int型変数){
[case 整数:
変数と整数が一致する場合の処理]…
[defalse:
すべてのcaseに該当しない場合の処理]
}
breakがないと、次のcaseまたはdefaultに処理が移ります。
[case 整数:
変数と整数が一致する場合の処理]…
[defalse:
すべてのcaseに該当しない場合の処理]
}
breakがないと、次のcaseまたはdefaultに処理が移ります。
項目 | 説明 |
条件式 | 評価対象です。boolean型である必要があります。 |
int型変数 | 多分岐の評価対象です。int型である必要があります。 |
解説
int型変数と一致するcaseに処理が移ります。
ソースコード | 説明 |
switch(3){ case 2: System.out.println("2"); break; case 3: System.out.println("3"); break; } | 指定した整数と一致するcase以降が実行されます。 |
switch(3){ case 2: System.out.println("2"); break; default: System.out.println("other"); break; } | 指定した整数と一致するcaseがない場合はdefault以降が実行されます。 |
switch(2){ case 2: System.out.println("2"); case 3: System.out.println("3"); default: System.out.println("other"); } | breakがない場合は以降の処理が引き続き実行されます。 |
繰り返し
for
書式
[ラベル:]…for(前処理;ループ条件;後処理){
繰り返すべき処理
}
繰り返すべき処理
}
項目 | 説明 |
ラベル | breakやcontinueで利用できるラベルです。 |
前処理 | 繰り返しに入る前に行われる処理です。 |
ループ条件 | ループを繰り返す条件です。 |
後処理 | ループ内の処理が1回終わるたびに行われる処理です。 |
for(拡張ループ)
書式
解説
[ラベル:]…for(型 変数名 : {配列 | コレクション}){
繰り返すべき処理
} 拡張ループと呼ばれる書式です。
繰り返すべき処理
} 拡張ループと呼ばれる書式です。
項目 | 説明 |
ラベル | breakやcontinueで利用できるラベルです。 |
型 | 各要素を参照するための変数の型です。 |
変数名 | 各要素を参照するための変数名で、任意の名称をつけます。 |
配列 | 繰り返し対象です。 |
コレクション | 繰り返し対象です。 |
解説
拡張ループと呼ばれる繰り返しです。
配列やコレクションに対し、要素の分だけ繰り返します。各要素は指定した変数を使ってアクセスできます。
for(int a : array)とすると1回目のループではaでarray[0]にアクセスでき、2回目はaでarray[1]にアクセスできます。
while
書式
例
[ラベル:]…while(ループ条件){
繰り返すべき処理
}
繰り返すべき処理
}
項目 | 説明 |
ラベル | breakやcontinueで利用できるラベルです。 |
ループ条件 | ループを繰り返す条件です。 |
例
概要 | ソースコード | 実行結果 | 説明 |
繰り返し |
boolean f = true; while(f){ System.out.println("f = " + f); f = false; } |
f = true f = false | 指定した条件が真である間ブロック内を繰り返します。 |
do
書式
[ラベル:]…do{
繰り返すべき処理
}while(ループ条件);
繰り返すべき処理
}while(ループ条件);
項目 | 説明 |
ラベル | breakやcontinueで利用できるラベルです。 |
ループ条件 | ループを繰り返す条件です。 |
ループの制御
break
ループを抜ける場合に使用します。
書式
書式
break [ラベル];
項目 | 説明 |
ラベル | breakやcontinueで利用できるラベルです。 |
continue
ループ内の以後の処理を飛ばすのに使用します。
書式
多重ループを一発で抜ける場合に利用できます。
乱用するとわかりにくくなるので避けたほうがよいでしょう。
書式
continue [ラベル];
項目 | 説明 |
ラベル | breakやcontinueで利用できるラベルです。 |
メソッドの終了
書式
解説
return [戻り値];
戻り値の型はメソッドの定義と一致している必要があります。
項目 | 説明 |
戻り値 | メソッドの戻り値です。 |
解説
メソッドの戻り値がvoidの場合はreturnは不要です。
void以外の場合はreturnでメソッドの戻り値で指定した型の値を返す必要があります。
例
ソースコード | 説明 |
for(int i = 0;i < 3;i++){ System.out.println("i = " + i); } | 変数iについて、初期値0、i < 3が成り立つ間繰り返します。1回繰り返すごとにiをインクリメントします。 |
int[] ar = {2,4,6}; for(int t : ar){ System.out.println("t = " + t); } | 拡張ループです。配列の要素分繰り返します。参照中の要素は指定した変数に格納されます。 |
do{ System.out.println("f = " + f); } while(f); | 実行後に条件判定を行い、条件が真である間ブロック内を繰り返します。最低でも1回は繰り返します。 |
for(int i = 0;i < 4;i++){ for(int j = 0;j < 4;j++){ System.out.print("(" + i + "," + j + ")"); if(i == 2 && j == 2){ break; } } System.out.println(); } | breakが実行されると、現在実行中のループを抜けます。 |
label1:for(int i = 0;i < 4;i++){ for(int j = 0;j < 4;j++){ System.out.print("(" + i + "," + j + ")"); if(i == 2 && j == 2){ break label1; } } System.out.println(); } | ラベルを指定した場合、breakによってラベルに該当するループを抜けます。多重ループでも1度で抜けることが可能です。 |
for(int i = 0;i < 4;i++){ for(int j = 0;j < 4;j++){ if(i == 2 && j == 2){ continue; } System.out.print("(" + i + "," + j + ")"); } System.out.println(); } | continueが実行されると、ブロック内のそれ以降の処理はスキップされます。 |
label1:for(int i = 0;i < 4;i++){ for(int j = 0;j < 4;j++){ if(i == 2 && j == 2){ continue label1; } System.out.print("(" + i + "," + j + ")"); } System.out.println(); } | ラベルを指定した場合、continueによってラベルに該当するループを飛ばします。 |