条件分岐②(条件式の結果が『false』の時の選択肢を作る『if~else文』)【ゼロから始めるJavaの基礎~その17~】

前回は『雨が降っていたら傘をさす、降っていなかったら何もしない』というように、条件式の結果が『true』になる時だけ、何らかの処理を行う条件分岐の記述をご紹介しました。

今回は条件式の結果が『false』になった場合でも何らかの処理を行うような構文をご紹介していきます。

条件式の結果が『false』の時の選択肢を作る『if~else文』

条件式の結果が『false』だった場合にも何らかの処理を行いたい場合は、if文に『else』というキーワードを追加した構文を使用します。

【構文】

if (条件式) {

条件式の結果がtrueの時に実行される処理;

} else {

条件式の結果がfalseの時に実行される処理;

}

少し構造が複雑になってきましたね。

前回使用した表の3行目の例を、今回の構文に当てはめて考えてみましょう!

条件Yesの場合の行動Noの場合の行動
雨が降っている傘をさす(特別何もしない)
所持金が1000円以下コンビニ弁当にするラーメンを食べる
【構文】

if (所持金 <= 1000円) {

コンビニ弁当を食べる;

} else {

ラーメンを食べる;

}

いかがでしょうか?条件は『所持金が1000円以下』なので、条件式は『所持金 <= 1000』でよさそうですね。

『if(条件式) { }』の部分の『{ }』の中には条件式の結果が『true』だった場合(※今回だと所持金が1000円以下だった時)に行いたい処理を記述しますので、今回は『コンビニ弁当を食べる』と記述します。

『else{ }』の括弧内には、条件式が『false』だった場合(※今回だと所持金が1000円を超えているとき)に行いたい処理を記述しますので『ラーメンを食べる』と記述します。

構造が少し複雑になって拒否反応が出ている方がいるかもしれませんが、落ち着いて当てはめていけばそこまで難しくはありませんので、最初はパズル感覚で条件式と行いたい処理を配置しましょう。

実際のサンプルを見てみる方がイメージが湧きやすい方もいるかと思いますので、動くプログラムにしてみましょう!

さすがに、実際に食べてくれるプログラムは作れませんので、コンソールに『コンビニ弁当を食べる』などの文字列を出力するようなプログラムにしますね(笑)

【サンプル】

int syojikin = 900;

if (syojikin <= 1000) {
	System.out.println("コンビニ弁当を食べる");
} else {
	System.out.println("ラーメンを食べる");
}

syojikin = syojikin + 500;

if (syojikin <= 1000) {
	System.out.println("コンビニ弁当を食べる");
} else {
	System.out.println("ラーメンを食べる");
}

【実行結果】

それではサンプルの動きを見ていきましょう!

まずは1行目で、『syojikin』という整数値(int)型の変数を定義して、『900』という値を代入しています。これで所持金は900円であるという設定をしています。

3行目からは条件分岐の『if~else文』に入っていきます。

所持金が1000円以下であるかを判断したいので、条件式は『syojikin <= 1000』となりますね。

『<=』という演算子を知らない、もしくは忘れてしまった方はこちらの演算子を紹介しているこちらのページでご確認くださいね。

また、左辺と右辺を逆転させた『1000 >= syojikin』という記述でも意味は変わりませんので、使いやすい方で構いません。

今回は所持金に900という値が代入されています。

条件式を実際の数値に置き換えてみると『900 <= 1000』となり条件式が成り立ちますので、結果は『true』であることが分かりますね。

そのため実行結果には『true』だった場合に実行される処理として記述されていた『System.out.println(“コンビニ弁当を食べる");』という処理の実行結果が表示されます。この場合、『if文』ブロック(3~7行目)における処理が終了しますので、5~7行目の処理は実行されません。ご注意ください。(※1)

この段階で頭の中に?マークが出た方は、構文をもう一度確認してからサンプルの処理の流れを再度確認してみてくださいね。

その後9行目で『syojikin』に500を足して、再代入しています。

そして、11行目から再度同じ内容の条件文に入りますが、今度は条件式が『1400 <= 1000』となって成り立たなくなりますので、結果が『false』となります

条件式の結果が『false』の場合は『else {}』の中に記述された処理が実行されますので、コンソールには実行結果として『ラーメンを食べる』という文字列が表示されます。

条件式の結果が『false』となる場合にも何らかの処理を行いたい場合には『if~else』の構文を使うということを覚えておきましょう!

【※1:『if文を抜ける』】

if文は複数の処理がブロック内に記述されていますが、条件分岐の結果実行される処理は1つだけです。
分岐の結果、条件に当てはまり何らかの処理が実行されたタイミングで、if文の中に記述されているほかの処理や分岐は無視され、if文ブロックでの処理は終わります

このように、if文ブロックとしての処理が終わり次の処理へ移ることを『if文を抜ける』と表現したりします。
『if文を抜ける』という説明を聞いたら、『条件に当てはまる処理が実行されて、if文ブロックの次の処理に移る』という意味だととらえてください。