Java入門⑥ if文 ── 条件によって動きを変える

前回は「キーボードから入力を受け取る(Scanner)」をやりました。

今回は、プログラミングの最初の山場、if文(イフぶん)です。これができると、プログラムが「考えて」動くようになります。

if文とは、「もし〜なら、これをする」という分かれ道です。

なぜ、これが必要なのか

第1回で「プログラムは上から順番に動く」と学びました。でも、いつも同じことをするだけでは、できることが限られます。

現実は、状況によってやることが変わります

「もし18歳以上なら、入場できる」
「もし点数が60点以上なら、合格」

この「もし〜なら」を表現するのが、if文です。料理でいうなら「もし味が薄かったら、塩を足す」という判断ですね。

書き方を見てみる

年齢で判定する例です。

int age = 20;

if (age >= 18) {
    System.out.println("入場できます");
}

実行すると「入場できます」と表示されます。

形を見てみましょう。

if (条件) {
    条件が true のときに、する処理
}
  • if のあとのカッコ ( ) の中に、条件を書く
  • 波カッコ { } の中に、条件が成り立ったときの処理を書く

age >= 18 は、第4回でやった「くらべる演算子」です。「age は18以上か?」をくらべて、true なら { } の中が実行されます。

「そうでなければ」を加える ── else

条件に合わないときの処理は、else(エルス)で書きます。

int age = 15;

if (age >= 18) {
    System.out.println("入場できます");
} else {
    System.out.println("入場できません");
}

age は15なので「15は18以上?」→ false。else の方、「入場できません」が表示されます。

if = もし〜なら / else = そうでなければ。この2つで、分かれ道が作れます。

入力と組み合わせてみる

前回の Scanner と組み合わせると、実用的になります。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("年齢を入力してください");
        int age = scanner.nextInt();

        if (age >= 18) {
            System.out.println("入場できます");
        } else {
            System.out.println("入場できません");
        }
    }
}

入力された年齢によって、結果が変わります。20なら「入場できます」、15なら「入場できません」。同じプログラムでも、入力によって動きが変わる。これが「プログラムが考えて動く」ということです。

3つ以上に分けたいとき ── else if

「合格・あと一歩・不合格」のように3つ以上に分けたいときは、else if を使います。

int score = 75;

if (score >= 80) {
    System.out.println("合格");
} else if (score >= 60) {
    System.out.println("あと一歩");
} else {
    System.out.println("不合格");
}

上から順にくらべて、最初に当てはまったところで終わりです。「80以上?」→ 75なのでfalse、「60以上?」→ true、「あと一歩」を表示して終了。条件は「きびしい順(大きい順)」に並べるのがコツです。

つまずきポイント

第4回でも触れた、「等しい」は ==(イコール2つ) です。

if (age == 18)    // 「ageは18と等しい?」(正しい)
if (age = 18)     // 「ageに18を入れる」になってエラー

if文の条件で「等しいか」をくらべたいときは、必ずイコールを2つ。1つだと「箱に入れる」の意味になってしまいます。

もうひとつ、学生がやりがちなのが、文字列の比較です。Javaでは、文字列を == でくらべると、うまくいかないことがあります。

if (name == "山田")          // うまくいかないことがある
if (name.equals("山田"))     // 文字列は equals でくらべる(正しい)

文字列をくらべるときは equals を使う。これはJava特有の大事なルールです。数字は ==、文字列は equals。セットで覚えておきましょう。

まとめ

if文は「もし〜なら、これをする」という分かれ道。

if (条件) {
    // true のときの処理
} else {
    // そうでないときの処理
}
  • if / else / else if で分岐を作る
  • 数字の「等しい」は ==(イコール2つ)
  • 文字列の比較は equals を使う(Java特有)

次回は、もうひとつの分岐の書き方、switch文 です。