Javaのif文とは?書き方や使い方をわかりやすく解説

Javaのプログラミング初心者でも安心して読めるように、if文の基礎から応用まで、丁寧に解説します。
この記事を読むことで、Javaのif文を使って条件分岐が書けるようになり、実践的なプログラムも自分で作れるようになります。
初心者のつまずきポイントもカバーしているので、つい読み進めたくなる内容になっています。
コードの読み方や書き方だけでなく、考え方やエラーの回避方法まで解説していきますね。
Javaのif文とは?
Javaのif文は「もし〜だったら○○する」といった条件分岐を行うための文法です。
プログラムに選択肢を与えることができるため、静的ではなく、動的で柔軟な動きを実現できます。
たとえば「もしテストの点数が80点以上なら合格」といったルールをプログラムに書くときに使います。
プログラムの中で条件に応じて処理を切り替えることができるので、ゲームのロジックや、ユーザー入力のチェック、設定の分岐など、多くの場面で使われます。
if文の基本構文
Javaのif文の書き方は次のようになります:
if (条件) {
// 条件がtrueのときに実行される処理
}
たとえば、変数score
が80以上かどうかを判定するコードは以下のようになります:
int score = 85;
if (score >= 80) {
System.out.println("合格です!");
}
このコードでは、score
が80以上であれば「合格です!」と表示されます。もし79以下だった場合は何も表示されません。とてもシンプルな書き方ですが、条件によって処理の流れを変えるという重要な意味を持ちます。
if〜else文
条件に当てはまらなかったときの処理も書きたいときは、else
を使います。たとえば、合格か不合格かをはっきり出したいときには次のように書きます。
int score = 70;
if (score >= 80) {
System.out.println("合格です!");
} else {
System.out.println("不合格です。");
}
このように書くことで、条件が満たされない場合にも別の処理を実行できます。if
とelse
は対になっており、if
が実行されなかった場合は自動的にelse
に処理が流れます。
else if文
複数の条件を順番に判定したいときは、else if
を使います。たとえば、成績の評価を複数の基準で分けたいときなどに便利です。
int score = 90;
if (score >= 90) {
System.out.println("とてもよくできました!");
} else if (score >= 80) {
System.out.println("合格です!");
} else {
System.out.println("不合格です。");
}
このようにすることで、条件を段階的に分けて判定できます。順番が大事で、上から順に評価されていくため、より厳しい条件を先に書くようにしましょう。
よくある間違いと注意点
if文は簡単そうに見えて、実際にはよくあるミスも多いです。以下では、特によくある間違いとその対処方法を紹介します。
セミコロンの誤用
if (score >= 80); {
System.out.println("合格です!");
}
このようにif
の直後にセミコロン(;
)をつけてしまうと、条件が無視されて常にブロックが実行されてしまいます。これは非常にありがちなバグで、見逃しやすいため注意が必要です。
条件式のミス
=
と==
を間違えるのも初心者に多いミスです。
if (score = 80) // 間違い!
if (score == 80) // 正しい!
1つの=
は代入を意味し、2つの==
は値の比較を意味します。間違えて代入してしまうと、常にtrueとなってしまうことがあります。
ブロックの省略ミス
if文の処理が1行でも、波かっこ({}
)はなるべく書いた方が安全です。あとから行が追加されたときのバグを防げます。
if文の活用例
数当てゲームの一部として使う
int secret = 5;
int guess = 3;
if (guess == secret) {
System.out.println("当たり!");
} else {
System.out.println("はずれ...");
}
ゲームを作るときにも、if文はとてもよく使われます。条件を正確に設定することで、ユーザーの行動に応じた反応をさせることができます。
入力に応じて表示を変える
Scanner scanner = new Scanner(System.in);
System.out.print("年齢を入力してください:");
int age = scanner.nextInt();
if (age >= 20) {
System.out.println("大人です。");
} else {
System.out.println("未成年です。");
}
ユーザーの入力に応じて処理を分けるのも、if文の得意な場面です。リアルタイムで動的なフィードバックをするようなプログラムでは必須の構文です。
演習問題
問題1:偶数か奇数かを判定するプログラム
問題: 整数が偶数か奇数かを判定してください。
ヒント: 2で割った余り(modulo演算)を使うと良いです。
解答例:
int number = 7;
if (number % 2 == 0) {
System.out.println("偶数です。");
} else {
System.out.println("奇数です。");
}
問題2:3つの数のうち最大値を表示する
問題: a, b, cという3つの数のうち、一番大きいものを表示するプログラムを書いてください。
ヒント: if
とelse if
を組み合わせて順に比較しましょう。
解答例:
int a = 5;
int b = 8;
int c = 3;
if (a >= b && a >= c) {
System.out.println("最大値は: " + a);
} else if (b >= a && b >= c) {
System.out.println("最大値は: " + b);
} else {
System.out.println("最大値は: " + c);
}
問題3:成績評価プログラム
問題: テストの点数に応じて「A」「B」「C」「D」と評価するプログラムを書いてください。
評価基準:
- 90点以上:A
- 80点以上:B
- 70点以上:C
- 70点未満:D
解答例:
int score = 85;
if (score >= 90) {
System.out.println("A");
} else if (score >= 80) {
System.out.println("B");
} else if (score >= 70) {
System.out.println("C");
} else {
System.out.println("D");
}
よくある質問(FAQ)
よくある質問をまとめました。
Q1. if文の中で変数を定義してもいいですか?
はい、できます。ただし、その変数はif文の中だけでしか使えません。スコープの考え方を理解して、意図しない変数の再定義に注意しましょう。
Q2. 条件が複雑になるときはどうしたらいい?
条件式が長くなりすぎると読みにくいので、変数にまとめると見やすくなります。また、論理演算子(&& や ||)を使って条件を整理することが重要です。場合によってはメソッドに分けるのも有効です。
Q3. if文のネストは避けたほうがいい?
深いネストは可読性が下がるため、できるだけ避けるのが望ましいです。早期リターン(return)を使ったり、ガード節を導入することでコードをすっきりさせることができます。
Q4. else ifはいくつでも使っていいの?
はい、何個でも使えます。ただし、条件の順序には注意してください。先に条件がマッチすると、後のものは無視されます。
Q5. switch文との違いは?
switch文は特定の値に基づいて処理を分けるのに向いています。一方、if文はより柔軟で複雑な条件に対応できるため、数値の範囲や複数条件を使いたい場合はif文が適しています。
まとめ
Javaのif文は、プログラムの流れを制御する基本中の基本です。条件に応じた処理を実行できるようになることで、より柔軟なプログラムが書けるようになります。
ユーザーの入力やデータの状態に応じて処理を変えることができるため、現実世界の多様な場面をプログラムで表現できるようになります。
初心者のうちはまずシンプルな使い方から始め、徐々に応用的な使い方に慣れていくことが大切です。
この記事で紹介した実例や演習問題を繰り返し練習することで、if文の考え方と使い方がしっかり身につくはずです。