ここまでのコードは、書いた順に全行が実行されていました。今回は「条件を満たすときだけ実行する」形を見ます。
実行環境は引き続きブラウザ上のもの(paiza.IO や OneCompiler)です。
if 文の基本形
public class Main {
public static void main(String[] args) {
int age = 20;
if (age >= 18) {
System.out.println("成人です");
}
}
}
成人です
if (age >= 18) は「age が 18 以上なら」という意味です。条件を満たすとき、Java の内部では true(真・成立)という値になり、{ } の中が実行されます。
age を 15 に変えてもう一度実行してみてください。今度は何も表示されません。条件を満たさないときは false(偽・不成立)になり、{ } の中がスキップされます。
if-else で2つに分ける
条件を満たさないときにも何かしたい場合は else を使います。
public class Main {
public static void main(String[] args) {
int age = 15;
if (age >= 18) {
System.out.println("成人です");
} else {
System.out.println("未成年です");
}
}
}
未成年です
条件が成立する(true)なら上の { } へ、成立しない(false)なら else の { } へ進みます。どちらか一方だけが実行されます。
flowchart TD
A["age >= 18 ?"] -->|true| B["「成人です」を表示"]
A -->|false| C["「未成年です」を表示"]
age の値を 18、20、10 などに変えて、出力がどう切り替わるか試すと感覚がつかめます。
比較演算子
if 文の ( ) の中で使う比較の記号をまとめます。
| 演算子 | 意味 | 例 | true(成立)になる場合 |
|---|---|---|---|
== | 等しい | a == 10 | a が 10 のとき |
!= | 等しくない | a != 10 | a が 10 以外のとき |
> | より大きい | a > 10 | a が 11 以上のとき |
< | より小さい | a < 10 | a が 9 以下のとき |
>= | 以上 | a >= 10 | a が 10 以上のとき |
<= | 以下 | a <= 10 | a が 10 以下のとき |
注意点が1つ。「等しいかどうか」は = ではなく ==(イコール2つ)です。= は代入なので意味がまったく違います。
前回の % と組み合わせる
前回やった %(余り)を使うと、偶数・奇数の判定ができます。
public class Main {
public static void main(String[] args) {
int number = 7;
if (number % 2 == 0) {
System.out.println("偶数です");
} else {
System.out.println("奇数です");
}
}
}
奇数です
number % 2 は「number を 2 で割った余り」です。余りが 0 なら偶数、そうでなければ奇数。前回の計算と今回の if 文がつながりました。
number を 4、11、0 などに変えて結果を確認してみてください。
コードを読むときの見方
if 文が入ったコードを読むときは、次の順で追います。
if ( )の中を読む — 何を比べているか。どんな場合に true になるか- true 側の
{ }を読む — 条件を満たしたときに何が起きるか elseがあるか見る — 条件を満たさないときの処理はあるか- 変数の値を当てはめる — 実際の値で true / false どちらに進むか確認する
次の回へ
ここまでで、変数・計算・条件分岐の基本が揃いました。次は for 文を使って「同じ処理をくり返す」コードを読みます。