今回は、「if-else文」と「if–else if –else文」について解説していきます。
目次
else文
if文を使った「条件を満たしたときに処理を実行する」という条件分岐を実行できるようになりました。
if文はelse文を組み合わせることで「条件がtrueの時は処理1を実行し、falseの時は処理2を実行する。」という分岐処理にすることもできます。
基本的な書き方は以下の通りです。else文は単独ではなく必ずif文と組み合わせて使います。
1 2 3 4 5 | if ( /*条件式*/ ){ //条件式がtrueだった時に実行される処理 } else { //条件式がfalseだった時に実行される処理 } |
else if文
if文はelse if文を組み合わせることで「条件1がtrueの時は処理1を実行する。条件1がfalseで条件2がtrueだった時は処理2を実行する。すべてfalseだった場合は何も実行しない。」という分岐処理にすることもできます。
基本的な書き方は以下の通りです。else if文は単独ではなく必ずif文と組み合わせて使います。
1 2 3 4 5 | if ( /* 条件式1 */ ){ //条件式1がtrueだった時に実行される処理 } else if ( /* 条件式2 */ ){ //条件式1がfalseで条件式2がtrueだった時に実行される処理 } |
1 2 3 4 5 6 7 | if ( /* 条件式1 */ ){ //条件式1がtrueだった時に実行される処理 } else if ( /* 条件式2 */ ){ //条件式1がfalseで条件式2がtrueだった時に実行される処理 } else if ( /* 条件式3 */ ){ //条件式1と2がfalseで条件式3がtrueだった時に実行される処理 } |
もし条件式の中にtrueになるものがあった場合、それ以降のelse ifは実行されません。
else ifとelseの併用
else if文とelse文を組み合わせることで「条件1がtrueの時は処理1を実行する。条件1がfalseで条件2がtrueだった時は処理2を実行する。すべてfalseだった場合は処理3を実行する。」という分岐処理にすることもできます。
基本的な書き方は以下の通りです。
1 2 3 4 5 6 7 | if ( /* 条件式1 */ ){ //条件式1がtrueだった時に実行される処理 } else if ( /* 条件式2 */ ){ //条件式1がfalseで条件式2がtrueだった時に実行される処理 } else { //条件式1も2もfalseだった時に実行される処理 } |
こちらも、else if文を複数記述することが可能です。
1 2 3 4 5 6 7 8 9 | if ( /* 条件式1 */ ){ //条件式1がtrueだった時に実行される処理 } else if ( /* 条件式2 */ ){ //条件式1がfalseで条件式2がtrueだった時に実行される処理 } else if ( /* 条件式3 */ ){ //条件式1と2がfalseで条件式3がtrueだった時に実行される処理 } else { //条件式1も2も3もfalseだった時に実行される処理 } |
もし条件式の中にtrueになるものがあった場合、それ以降のelse ifやelseは実行されません。
サンプルソース
if-else if-else文を使用したサンプルソースを見ていきましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | package java_silver; public class Omikuji { static public void main(String[] args) { int x = 100 ; if (x== 100 ) { //x=100の時に実行 System.out.println( "おみくじの結果は大吉です。" ); } else if (x < 100 && x >= 70 ) { //70<=x<100の時に実行 System.out.println( "おみくじの結果は吉です。" ); } else if (x < 70 && x >= 50 ) { //50<=x<70の時に実行 System.out.println( "おみくじの結果は中吉です。" ); } else if (x < 50 && x >= 30 ) { //30<=x<50の時に実行 System.out.println( "おみくじの結果は小吉です。" ); } else if (x < 30 && x >= 10 ) { //10<=x<30の時に実行 System.out.println( "おみくじの結果は末吉です。" ); } else if (x < 10 && x > 0 ) { //0<x<10の時に実行 System.out.println( "おみくじの結果は凶です。" ); } else if (x == 0 ) { //x=0の時に実行 System.out.println( "おみくじの結果は大凶です。" ); } else { //xの値が0~100以外の時に実行。 System.out.println( "エラー" ); } } } |
サンプルコードでは、xの値に応じておみくじの結果が変わるといった動作を実行しています。コード内のxの値を変えてコンパイルからやり直すと出力される結果が変わります。
今回xの値は固定なので、何回実行しても同じ結果が返ってきます。このままだとおみくじ感は全然ありませんね。
xの値がランダムで決まるコードになれば実行するたびに結果が変わって本物のおみくじみたいな動作をさせることが出来るようになります。
おまけ:ランダムで結果が変わるおみくじ
ランダムで結果が変わるおみくじのソースコードです。
ランダムな数字を使うためにRandomというクラスを利用しています。詳しい解説は省略します。
このソースコードはコンパイルしなおさなくても実行するたびに結果が変わります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | package java_silver; import java.util.Random; //ここを追加 public class Omikuji { static public void main(String[] args) { //int x = 100; //ここを次のように変更 int x = new Random().nextInt( 100 + 1 ); //0~100までのランダムな数字が1つ選ばれる if (x== 100 ) { //x=100の時に実行 System.out.println( "おみくじの結果は大吉です。" ); } else if (x < 100 && x >= 70 ) { //70<=x<100の時に実行 System.out.println( "おみくじの結果は吉です。" ); } else if (x < 70 && x >= 50 ) { //50<=x<70の時に実行 System.out.println( "おみくじの結果は中吉です。" ); } else if (x < 50 && x >= 30 ) { //30<=x<50の時に実行 System.out.println( "おみくじの結果は小吉です。" ); } else if (x < 30 && x >= 10 ) { //10<=x<30の時に実行 System.out.println( "おみくじの結果は末吉です。" ); } else if (x < 10 && x > 0 ) { //0<x<10の時に実行 System.out.println( "おみくじの結果は凶です。" ); } else if (x == 0 ) { //x=0の時に実行 System.out.println( "おみくじの結果は大凶です。" ); } else { //xの値が0~100以外の時に実行。 System.out.println( "エラー" ); } } } |
はじめてのJavaシリーズの目次はこちら
基本構文編の記事一覧はこちら