Java入門⑥ if文 ── 条件によって動きを変える
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文 です。

