今回はプログラムの中で「条件によって処理を分ける」ための仕組み、if(条件分岐)について解説します。
「もし○○なら~する」といった判断をプログラムにさせるための基本文法です。
ifとは?
ifは「ある条件がtrueなら指定した処理を実行する」という命令です。
基本構文は以下の通りです。
if (条件式) {
// 条件がtrueのときに実行される処理
}
たとえば、次の例を見てみましょう。
int score = 80;
if (score >= 70) {
System.out.println("合格です!");
}
この例ではscoreが70以上であれば「合格です!」と表示されます。
if文の中括弧を省略するとバグの温床になる
実は処理が1行だけなら中括弧 {} を省略できます。
// 中括弧を省略した例
if (score >= 70)
System.out.println("合格です!");
一見スッキリして見えますが、これは非常に危険な書き方です。 後から処理を1行追加したときに、意図しない動作を引き起こす可能性があります。
// バグを生みやすい例
if (score >= 70)
System.out.println("合格です!"); // ←scoreが70以上の場合のみ実行される
System.out.println("よく頑張りました!"); // ←常に実行される
上のコードは一見すると「70点以上なら2行出力される」ように見えますが、 実際には中括弧がないため、if文が適用されるのは1行目だけです。
つまり2行目のSystem.out.printlnは 条件に関係なく常に実行されてしまいます。
このようなバグは目で見ただけでは気づきにくいため注意が必要になります。
if文のネスト(入れ子構造)
if文の中にさらにif文を書くこともできます。これをネストと呼びます。
int score = 85;
boolean submitted = true;
if (score >= 70) {
if (submitted) {
System.out.println("合格(提出済)");
} else {
System.out.println("合格(未提出)");
}
}
ただし、ネストが深くなると可読性が下がるためなるべく条件をまとめる工夫も大切です。
else:条件がfalseのときの処理
条件が満たされなかったときに別の処理を行いたい場合はelseを使います。
int score = 60;
if (score >= 70) {
System.out.println("合格です!");
} else {
System.out.println("不合格です…");
}
上記の例では70未満の場合に「不合格です…」が出力されます。
else if:複数条件を順に判定
複数の条件を順番にチェックしたい場合はelse ifを使います。
int score = 85;
if (score >= 90) {
System.out.println("秀です!");
} else if (score >= 70) {
System.out.println("合格です!");
} else {
System.out.println("不合格です…");
}
上から順に条件を判定し最初にtrueになったブロックだけが実行されます。
なので上記の例では「合格です!」と表示され、elseは実行されず「不合格です…」と表示されません。
複数条件を扱う(&& と ||)
if文では論理演算子を使って複数の条件を組み合わせることができます。
| 演算子 | 意味 | 例 |
|---|---|---|
| && | かつ(AND) | score >= 70 && score <= 100 |
| || | または(OR) | score < 0 || score > 100 |
実際のコード例:
int age = 20;
boolean hasTicket = true;
if (age >= 18 && hasTicket) {
System.out.println("入場できます!");
}
上記のように、「年齢が18歳以上」かつ「チケットを持っている」場合に処理を実行します。
まとめ:if文でプログラムの流れを制御しよう
- ifは「条件がtrueなら実行」する構文
- elseで条件に当てはまらない場合の処理を書く
- else ifで複数条件で条件分岐を記載できる


コメント