入門 ブラウザ 約12分

if文で条件によって分ける

if / else と比較演算子を使い、条件によって処理が分かれるコードを読めるようにするレッスン。

ここまでのコードは、書いた順に全行が実行されていました。今回は「条件を満たすときだけ実行する」形を見ます。

実行環境は引き続きブラウザ上のもの(paiza.IOOneCompiler)です。

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(真・成立)という値になり、{ } の中が実行されます。

age15 に変えてもう一度実行してみてください。今度は何も表示されません。条件を満たさないときは 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 の値を 182010 などに変えて、出力がどう切り替わるか試すと感覚がつかめます。

比較演算子

if 文の ( ) の中で使う比較の記号をまとめます。

演算子意味true(成立)になる場合
==等しいa == 10a が 10 のとき
!=等しくないa != 10a が 10 以外のとき
>より大きいa > 10a が 11 以上のとき
<より小さいa < 10a が 9 以下のとき
>=以上a >= 10a が 10 以上のとき
<=以下a <= 10a が 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 文がつながりました。

number4110 などに変えて結果を確認してみてください。

コードを読むときの見方

if 文が入ったコードを読むときは、次の順で追います。

  1. if ( ) の中を読む — 何を比べているか。どんな場合に true になるか
  2. true 側の { } を読む — 条件を満たしたときに何が起きるか
  3. else があるか見る — 条件を満たさないときの処理はあるか
  4. 変数の値を当てはめる — 実際の値で true / false どちらに進むか確認する

次の回へ

ここまでで、変数・計算・条件分岐の基本が揃いました。次は for 文を使って「同じ処理をくり返す」コードを読みます。