こんにちは、株式会社プロシードの「こた」です!
本日はJavaのif文を学んでいきます!
・if文の基本的な書き方(ブロック、条件式など)
・elseやelse ifを使ったif文
・文字列の比較
いわゆる「条件分岐」と呼ばれる分野ですね!
難しい単語が出てきていますが、要は「ユーザ名とパスワードが一致していればログインでき、一致しなければログイン失敗」みたいなものです!
条件を満たしているか、満たしていないかで処理が変わる、ということですね^ ^
実際の開発現場でも、とても良く使います!
皆さんに「理解できました!」といってもらえるように頑張ります!
よろしくお願いします^ ^
前回出題したJavaの問題
前回の記事で、if文に関する問題を出題しました!
以降でこの問題を解説していきますが、もちろん問題を解いていなくても大丈夫ですので、ご心配なく^ ^
では、はじめましょう!
【事前説明1】条件分岐とif文の基礎
今回は事前に色々と説明してから、問題を解説したいと思います^ ^
まずは条件分岐です!
難しそうな用語ですが、そんなことはないです^ ^
「お持ち帰りですか?」
・「はい」なら注文して受け取ったら帰る
・「いいえ」なら受け取ったらお店で食べる
上記はファストフード店の例ですが、牛丼屋さんでも良いです!
お店に入って券売機を見ると、「店内」と「お持ち帰り」っていうボタンが出てるの、見たことないですかね?
これは「どっちのボタンを押したのか」によって処理を変えようとしているからですね!
こういうのが条件分岐です^ ^
図にするとこんな感じになります!
プログラムにするとこんな感じです!
実行結果
・ifの後ろのカッコには条件を書く
・条件を満たしていたら、ifの方の{ }で囲まれたとこが実行される
・条件を満たさなかったら、elseの方の{ }で囲まれたとこが実行される
このようなifを使ったプログラムをif文といいます!
ifは英語で「もし~なら」、elseは「他の、他に」という意味!
そう考えると、英語の文章みたいですね^ ^
【事前説明2】ブロックの中で宣言した変数について
続いてはブロックについてです!
波カッコ{ }で囲まれたエリアですね^ ^
いまはSystem.out.printlnしか書いてないですが、このブロックの中には変数を書くこともできます!
ただし注意点があって、ブロックの中で宣言した変数は、そのブロックの中でしか使用できません!
上の例ではString型の変数sはifブロックの中でしか使えません!
「波カッコ{ }がどこからどこまでなのか」をしっかりと意識するようにしましょう^ ^
【事前説明3】条件式の書き方
条件式とは、「もし~ならこの処理を、そうじゃないならこっちの処理を実行」の~に該当する部分です!
条件式はif文のカッコ( )の中に書きます!
あとはカッコ( )の中に何を書くか?ですが、以前に比較演算子の解説をしたと思います、こちらですね!
ここでは「等しい/等しくない」や「大小関係」を学びました!
書き方はこんな感じでしたね^ ^
・x != y xとyが異なっているかどうか?
・x > y xがyより大きいかどうか?
・x >= y xがy以上かどうか?
・x < y xがyより小さいかどうか?
・x <= y xがy以下かどうか?
これらをif文のカッコ( )の中に書けばOKです!
正確には「最終的にtrueかfalseになるもの」であればOKです!
上の例だと「1+2」は結果がtrueにもfalseにもならないのでNGです。
「もし3なら」みたいに捉えられないこともないですが、「3に等しい場合は」を表現する時は、きちんと==を使いましょう^ ^
事前説明は以上です!
それでは問題の解説に移りましょう^ ^
問題1:if文の中身が実行される条件
問題1はこちら
実行結果
こちらは事前説明1で解説したことがポイントです!
事前説明1では、以下のようにif文をざっくり解説していましたね^ ^
・ifの後ろのカッコには条件を書く
・条件を満たしていたら、ifの方の{ }で囲まれたとこが実行される
・条件を満たさなかったら、elseの方の{ }で囲まれたとこが実行される
注目してほしいのは箇条書き3つ目です!
要は、条件を満たしてたらifブロックの中身が実行されるのですが、言い換えると、if文の条件式がtrueならifブロックの中身が実行されるということになります!
今回の問題1では、if文の条件式に最初からtrueが入っているので、if文の中の処理が実行されます!
問題2:if文の中身が実行される条件
問題2はこちら
実行結果
この問題も、先ほどのざっくり解説がポイントです!
・ifの後ろのカッコには条件を書く
・条件を満たしていたら、ifの方の{ }で囲まれたとこが実行される
・条件を満たさなかったら、elseの方の{ }で囲まれたとこが実行される
注目してほしいのは箇条書き4つ目です!
要するに、条件を満たさなかったらelseブロックの中身が実行されるわけなのですが、
今回はelseブロックがありません!
この場合は、ifブロックがただ実行されないだけです!
「条件式がfalseの時は、ifブロックは実行されない」ということをしっかり覚えておきましょう^ ^
問題3:elseを使ったif文
問題3はこちら
正解はこちら
こちらは問題2までの説明で解けます!
改めて復習です!
・条件式(カッコの中)がfalse ⇒ ifブロックは実行されない
こうでしたね^ ^
で、問題3を見てみると、11行目のx + yの答えは9になるので、変数zには9が入ってるはずです!
そこから12行目のif文のカッコの中が実行されるわけなのですが、
変数zに9が入っているなら「z == 9」はtrueですね^ ^
というわけで、この問題ではifブロックの処理が実行されます!
問題4:else ifを使ったif文
問題4はこちら
正解はこちら
注目すべきは12行目です!
else ifというものが出てきましたね^ ^
今までのif文は「もし○○なら処理Aを、そうじゃないなら処理Bを実行」という形でした!
しかし、else ifを使うと「もし○○なら処理Aを、そうじゃなくても△△なら処理Bを、どれでもないなら処理Cを実行」というプログラムが書けます!
問題4がまさにそうで、10行目の「aは5より大きいか?」はダメだったが、11行目の「aは3より大きいか?」はクリアしていますね^ ^
なのでこの問題ではelse ifブロックが実行されます!
最後にelse ifに関して1点補足しておきます^ ^
板書のように、複数の条件に合致した場合は、最初に合致した条件だけ実行されます!
「合致したやつぜんぶ実行!」とかないので、気をつけてくださいね^ ^
問題5:文字列の比較
問題5はこちら
正解はこちら
実行結果
「パスワードが”abcd”と一致しているか」をプログラムで書く問題なのですが、
実はこれ、経験者でも油断してると間違えたりしてしまう問題です(笑)
詳しく見ていきましょう!
現時点では「文字列の比較はequalsを使う」と覚えておいてください!
「==」で文字列比較をすると、エラーにならないけど時々変な動きになって、とてもややこしくなったりします^ ^;
注意しましょう!
問題6:条件式が複雑なif文
問題6はこちら
正解はこちら
実行結果
以前に論理演算子の解説をしたのを覚えていますでしょうか??
ポイントはこうでしたね^ ^
・条件A || 条件B ⇒ 「条件Aがtrueまたは条件Bがtrue」ならtrue
・!条件A ⇒ 「条件Aを満たさない」ときにtrue(条件Aじゃない)
こちらをif文に応用すれば、問題6のように複雑な条件も書くことができます!
問題6の条件を解説すると、、、
こんな感じです^ ^
「かつ」や「または」を使いこなして、いろいろな条件式を書けるようになりましょう!
おわりに
お疲れさまでした!
今回は盛りだくさんでしたね、お疲れさまでした^ ^
「わかりやすかった!」「わかりにくかった、、」など、コメントいただければ嬉しいです!
それでは、また次の記事でお会いしましょう!
最後まで読んでくださり、ありがとうございました!
以上、こたでした!