【Java】if文を使って条件分岐を行う!サンプルコードを使って解説!
条件分岐はプログラミングで最も重要な制御で、この制御がないものは見たことがありません。
if文を使うことによって、Webサイトの表示を切り替えたり、複数のデータの中から特定のデータのみ処理を実施したり、エラー画面を表示させたり、現在の時刻に応じて画面の表示を切り替えるなど、プログラムの機能に幅を広げることができます。
今回はif文を使って以下のパターンで条件分岐を行います。
⚫︎ ifのみを使用して条件分岐を行う場合
⚫︎ if elseを使用して条件分岐を行う場合
⚫︎ else ifを使用して条件分岐を行う場合
目次
条件分岐とは
条件分岐とは条件式によって処理が分岐することです。
ある条件を指定すると、実行時にこれを判断し、条件が満たされている場合に実行するコードと、満たされていない場合に実行するコードに分岐させることができます。
例えば、パソコンでもデータを読み取ると、読み取ったデータを表示しますが、読み取れなかった場合はエラーを表示します。
if文とは
if文とは条件の結果によって処理の内容が変化します。
条件式はブール値で判断され、ブール値がtrue場合、処理が実行され、falasだった場合、処理をスルーします。
ifの書き方
ifの構文は下記となります。
1 2 3 4 |
if (条件式) { // 条件式がtrueだった場合に行う文 } |
条件式がtrueだった場合、if内(括弧内)の処理が実行されます。
条件式がfalseだった場合、if内の処理は実行されずスキップされます。
if elseの書き方
続いて、if elseの構文は下記となります。
1 2 3 4 5 6 7 8 9 |
if (条件式) { // 条件式がtrueだった場合に行う文 } else { // 条件式がfalseだった場合に行う文 } |
条件式がtrueだった場合、if内の処理が実行されますが、条件式がfalseだった場合、else内の処理が実行されます。
else ifの書き方
また、else ifの構文は下記となります。
1 2 3 4 5 6 7 8 9 |
if (条件式1) { // 条件式1がtrueだった場合に行う文 } else if(条件2式) { // 条件式1がfalseで条件式2がtrueだった場合に行う文 } else { // 条件式2がfalseだった場合に行う文 } |
条件式1がtrueだった場合、if内の処理が実行されますが、条件式1がfalseで条件式2がtrueだった場合else if内の処理が実行されます。
そして、条件式2がfalseだった場合else内の処理が実行されます。
if文を使ったサンプルコード
ifのみを使用して条件分岐を行う場合
例
1 2 3 4 5 6 7 8 9 10 11 |
class Main { public static void main(String[] args) { int number = 17; if (number > 0) { System.out.println("数値は正です。"); } System.out.println("処理を終了します。"); } } |
出力結果
数値は正です。処理を終了します。
ここで条件式はnumberは0より大きい(number > 0)となってます。
numberの値は10である為、条件式はtrueとなります。
したがって、if文の括弧内の処理が実行されます。
if elseを使用して条件分岐を行う場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class mian { public static void main(String[] args) { int number = -4; if (number > 0) { System.out.println("数値は正です。"); } else (number < 0) { System.out.println("数値は負です。"); } } } |
出力結果
数値は負です。
numberは0より大きい(number > 0)かどうかを確認していますが、numberは-4です。
したがって、条件式はfalseとなり、elseの括弧内の処理が実行されます。
else ifを使用して条件分岐を行う場合
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
class mian { public static void main(String[] args) { int number = 0; if (number > 0) { System.out.println("数値は正です。"); } else if (number < 0) { System.out.println("数値は負です。"); } else { System.out.println("数値は0です。"); } } } |
出力結果
数値は0です。
ここには、2つの条件式があります。
numberは0より大きい(number > 0)かどうかを確認します。
numberは0よりも小さい(number < 0)かどうかを確認します。
ここで、numberは0です。
したがって、両方の条件式はfalseとなり、elseの括弧内の処理が実行されます。
if文での注意点
ネストにしすぎない
ifの中にif文を書くことで多重の条件処理になることを「ネスト」といいます。
多重の条件処理になるのは構いませんが、多重にしすぎるとどこの処理なのかが分かりにくくなりますので
なるべく多重の条件処理は避けるようにしましょう。
例
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 31 32 33 34 35 36 37 38 39 40 41 42 43 |
public class Main { public static void main(String[] args) throws Exception { int a = 50; if (a > 0) { if (a > 100) { System.out.println("aは100より大きいです。"); } else if (a < 50) { System.out.println("aは50より小さいです。"); } else { System.out.println("aは50と100の間です。"); } } else { if (a < -100) { System.out.println("aは-100より小さいです。"); } else if(a < -50) { System.out.println("aは-50より小さいです。"); } else { System.out.println("aは-100から-50の間です。"); } } } } |
出力結果
aは50と100の間です。
今回は2重の条件処理なのでまだ分かりやすいですが、これが3重、4重になるとコード自体がわかりにくくなります。
ぶら下がり文
「ぶら下がり文」とは処理が1つの場合にブロックを使わずに記述することをといいます。
ただし、ぶら下がり文を使うと、複雑な「if」文であることから勘違いを起こしやすくなるので注音してください。
例
1 2 3 4 5 6 |
if (a < 0) if (b < 0) c = 0; else c = a + b; |
「c= a + b」の処理が行われるのは a >= 0の場合のように見えますが、a < 0 かつb >= 0の場合となります。
三項演算子で書く場合
三項演算子を使ってif文を書くこともできます。
例
1 2 3 4 5 6 7 8 9 10 11 |
public class Main { public static void main(String[] args) throws Exception { int number = 6; String result = number > 0 ? "正の数" : "負の数"; System.out.println(result); } } |
出力結果
正の数
三項演算子を使ってif文を作成しました。
しかし、三項演算子を用いる場合は、if文と同じようには使えません。
ある値を返したい場合にのみ使うことができますので注意してください。
switch文
if文とは別な書き方で条件分岐を行うことができるswitch文というものがあります。
switch文は多数の条件分岐を行う際に便利なのでこちらも覚えておきましょう。
今回のポイント
if文で条件処理を行う
条件分岐で処理を行うにはif文を使用する
⚫︎ ifのみを使用する場合、ブール値がtrueの場合、処理が実行され、falseの場合、処理をスルーする
⚫︎ if elseを使用する場合、ブール値がtrue場合、ifの括弧内の処理が実行され、falseの場合、elseの括弧内の処理が実行される
⚫︎ else ifを使用する場合、ブール値がtrue場合、ifの括弧内の処理が実行され、falseの場合、esle ifの条件式が判断される
else ifの条件式がtrueの場合、else ifの括弧内の処理が実行され、falseの場合、elseの括弧内の処理が実行される
⚫︎ if文を書く際に、ネストしすぎないようにする
⚫︎ if文は三項演算子を使用して書くことも可能
⚫︎ 多数の条件分岐を行う際にはswitch文を使用する
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。