こんにちは、コイキングです。
本記事では'条件分岐'について、説明したいと思います。
1. 条件分岐とは?
条件分岐は条件式を用いて、コードを実行するかどうか制御する構文で、
条件式の結果が真の場合構文内のコードが実行される形でコードの実行を制御します。
Javaで条件分岐の構文はif文、switch文、算術演算子があります。
2. if文
if文は条件式の結果が真であればif文の構文内のコードが実行され、プログラムのフローを制御する構文です。
else、else-ifキーワードを使ったり、省略することで多種多様にコード実行を制御できます。
1) if文単体で使う
※ 条件式の結果が真の場合、if文内部のコードが実行されます。
int a = 10;
int b = 20;
int c = 10;
if (a < b) {
System.out.println(a +" より "+ b +"が大きい");
}
※ 条件式の結果が偽の場合、if文内部のコードは実行されないです。
if (a < c) {
System.out.println(a +" より"+ c +"が大きい");
}
※ AND・OR演算子を使い、複数の条件比較ができる
if (a < b && a == c) {
System.out.println(a +" より"+ c +"が大きい, " + a +"と "+ c +"は同じだ");
}
2) if - else
if文の条件式の結果が真の場合、if文内部のコードが実行され、条件式の結果が偽の場合else文内部のコードが実行されます。
if (a < c) {
System.out.println(a +" より"+ c +"が大きい");
} else {
System.out.println("条件不一致!!");
}
3) if - else if
if文の条件式の結果が真の場合、if文内部のコードが実行され、if文の条件の結果が偽の場合、
else if文の条件式を確認します。
else if文の条件式の結果が真の場合、else if文内部のコードが実行され、else if文の結果が偽の場合、if-else if構文のコードは何も実行されません。
※ else if文の数は制限がありません。
if (a < c) {
System.out.println(a +" より"+ c +"が大きい");
} else if (a < b && a == c) {
System.out.println(a +" より"+ c +"が大きい, " + a +"と "+ c +"は同じ");
} else if (a < b) {
System.out.println(a +" より"+ b +"が大きい");
}
4) if - else if - else
if文の条件式の結果が真の場合、if文内部のコードが実行され、if文の条件の結果が偽の場合、
else if文の条件式を確認します。
else if文の条件式の結果が真の場合、else if文内部のコードが実行され、else if文の結果が偽の場合、else文内部のコードが実行されます。
if (a < c) {
System.out.println(a +" より"+ c +"が大きい");
} else if (a < b && a == c) {
System.out.println(a +" より"+ c +"が大きい, " + a +"と "+ c +"は同じ");
} else if (a < b) {
System.out.println(a +" より"+ b +"が大きい");
} else {
System.out.println("条件不一致!!");
}
3. switch文
switch文はキーの値と一致するケース文のコードを実行する方式でプログラムのフローを制御する構文です。
複数の条件分岐が必要な場合使うとif文よりコードが見やすくなると私は思います。
int key = 2;
switch (key) {
case 1 :
System.out.println("Keyは 1 です。");
break;
case 2 :
System.out.println("Keyは 2 です。");
break;
case 3 :
System.out.println("Keyは 3 です。");
break;
default:
System.out.println("条件不一致!!");
break;
}
// # 実行結果
// Keyは 2 です。
※ break文を使わない場合条件が一致したcaseからbreakを会うまで全てのcaseが実行されます!
switch (key) {
case 1 :
System.out.println("Keyは 1 です。");
case 2 :
System.out.println("Keyは 2 です。");
case 3 :
System.out.println("Keyは 3 です。");
break;
default:
System.out.println("条件不一致!!");
}
// # 実行結果
// Keyは 2 です。
// Keyは 3 です。
4. 三項演算子
三項演算子はif文を単体で使う場合に代わりに使うと、コードを見やすく作成できる長所がある条件分岐構文です。
※ 基本的な使い方
int su1 = 100;
int su2 = 200;
// [データ型] [結果値を入れる変数] = (条件式) ? [条件式が真の場合の結果値] : [条件式が偽の場合の結果値];
int resultInt = su1 < su2 ? su1 : su2 ;
System.out.println(resultInt); // 100
※ 括弧で条件を囲むことができる、リターン可能なデータタイプはプリミティブ型・参照型どちらもできます。
String resultStr = (su1 < su2) ? su2+"の方がより大きい" : su1+"の方がより大きい" ;
System.out.println(resultStr); // 200の方がより大きい
※ 結果値として戻り値があるメソッドをセットすることもできす。
int resultInt2 = (su1 < su2) ? beTwice(su2) : beTwice(su1);
System.out.println(resultInt2);
public static int beTwice(int su) {
return su * 2;
}
※ 例示コード
https://github.com/leeyoungseung/algorithmBasic/blob/master/algorithm/src/basic/B_05_Conditions.java
※ 韓国語のポストは以下のURLで確認できます。
https://koiking.tistory.com/77?category=1068655