【Java】レッスン2-02:if文の使い方を理解しよう|条件分岐の基本

一つ前のページでは比較演算子と論理演算子について学習しました。
今回は if文による分岐処理 について見ていきましょう。
Lesson1:基礎文法編
Lesson2:制御構造編
・Lesson2-1:比較演算子と論理演算子を理解しよう
・Lesson2-2:if文による分岐処理を理解しよう ◁今回はココ
・Lesson2-3:switch文による分岐処理を理解しよう
・Lesson2-4:for文による繰り返し処理を理解しよう
・Lesson2-5:while文による繰り返し処理を理解しよう
・Lesson2-6:繰り返しを制御しよう
・Lesson2-7:配列を理解しよう
・Lesson2-8:エラーメッセージを読めるようになろう
・Lesson2-9:例外処理を理解しよう
・確認問題2-☆1:ハイアンドロー ゲームを作ろう
・確認問題2-☆2:数字当てゲームを作ろう
・確認問題2-☆3:じゃんけんゲームを作ろう
Lesson3:メソッド編
Lesson4:コレクション編
Lesson5:クラス編
Javaのif文とは?条件に応じた処理を分岐する基本構文を解説

プログラミングにおいて条件に応じて処理を変更することは重要な技術の一つです。
Javaでは条件に従ってプログラムの流れを変えるための「分岐処理」として if
文や if-else
、else if
文が使用されます。
この節では各分岐の使い方について学んでいきます。
if文の基本構文と使い方|trueのときだけ処理する方法
if
文は指定された条件が「真(true)」の場合にのみ、特定の処理を実行します。
基本的な構文は以下の通りです。
if (条件) { // 条件が真のとき実行されるコード }
例えば変数 a
が10より大きい場合にメッセージを表示するコードは以下のように書けます。
int a = 15; if (a > 10) { System.out.println("aは10より大きいです"); }
この例ではa
が10より大きいので、"aは10より大きいです"
と出力されます。
aの値を5に変更すると、何も出力されません。
if-else文で条件によって2通りに分ける書き方
if-else
文を使うと条件が真でない場合に別の処理を実行することができます。
構文は次のようになります。
if (条件) { // 条件が真のとき実行されるコード } else { // 条件が偽のとき実行されるコード }
次のコードは変数 a
の値が10より大きいか小さいかで異なるメッセージを表示します。
int a = 5; if (a > 10) { System.out.println("aは10より大きいです"); } else { System.out.println("aは10以下です"); }
この場合a
が10以下なので、"aは10以下です"
と表示されます。
else ifで複数条件を分岐する方法|順番に評価するしくみ
else if
文を使うことで、複数の条件を持つ分岐処理が可能になります。
構文は次の通りです。
if (条件1) { // 条件1が真のとき実行されるコード } else if (条件2) { // 条件2が真のとき実行されるコード } else { // すべての条件が偽のとき実行されるコード }
以下のコードは変数 a
の値に応じて異なるメッセージを表示します。
int a = 15; if (a > 20) { System.out.println("aは20より大きいです"); } else if (a > 10) { System.out.println("aは10より大きく、20以下です"); } else { System.out.println("aは10以下です"); }
この例ではa
は15なので、"aは10より大きく、20以下です"
が表示されます。
年齢に応じたメッセージ表示|if文を使った実践例
ここでは実際に if
、if-else
、および else if
を使ってユーザーの年齢に応じてメッセージを表示する例を示します。
int age = 25; if (age < 13) { System.out.println("あなたは子供です"); } else if (age < 20) { System.out.println("あなたはティーンエイジャーです"); } else if (age < 65) { System.out.println("あなたは成人です"); } else { System.out.println("あなたは高齢者です"); }
このコードでは、age
の値に応じて出力が変わります。
age
が13未満の場合は「子供です」と表示されます。age
が13以上20未満の場合は「ティーンエイジャーです」と表示されます。age
が20以上65未満の場合は「成人です」と表示されます。age
が65以上の場合は「高齢者です」と表示されます。
if文・if-else文の使い方まとめ|条件分岐の基本をふり返り
if
文、if-else
文、そして else if
文は、Javaで条件に応じた処理を実行するための重要な文法です。
複数の条件を扱う場合や条件が偽の場合の処理も簡単に書けるようになります。
次の章ではさらに多くの条件分岐ができる switch
文について学び、条件ごとの処理をより柔軟にしていきましょう。
練習問題|点数に応じた評価メッセージを出力しよう

テストの点数に応じて異なるメッセージを表示するプログラムを作成しましょう。
ユーザーから入力された点数に基づいて、分岐処理を用いて異なるメッセージを表示します。
点数が90点以上なら「素晴らしい!優秀な成績です。」、70点以上90点未満なら「よくできました!」、50点以上70点未満なら「合格です。もう少し頑張りましょう。」、50点未満なら「不合格です。再試験が必要です。」と表示しましょう。
この問題の要件
以下の要件に従ってコードを完成させてください。
Scanner
クラスを使用して、ユーザーが入力する点数(0~100の整数)を受け取ること。- 点数に応じて以下の条件に基づきメッセージを表示すること。
- 90点以上:
"素晴らしい!優秀な成績です。"
- 70点以上90点未満:
"よくできました!"
- 50点以上70点未満:
"合格です。もう少し頑張りましょう。"
- 50点未満:
"不合格です。再試験が必要です。"
- 90点以上:
- 必要に応じてif文とelse if文を用いた分岐処理を実装すること。
ただし、以下のような実行結果となること。
テストの点数を入力してください(0~100): 85 よくできました!
この問題を解くヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
- ヒント1【コードの構成を見る】
-
正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)1:
Scanner
クラスのインポート
2:クラスTestScore
の定義
□ メインメソッドmain
の定義
□ □Scanner
クラスのインスタンスscanner
を作成
□ □ テストの点数を入力するメッセージを表示
□ □ 変数score
を宣言し、scanner
で入力を取得
□ □ if文にてscore
が90以上かを判定
□ □ □ 「素晴らしい!優秀な成績です。」と出力
□ □ else if文にてscore
が70以上かを判定
□ □ □ 「よくできました!」と出力
□ □ else if文にてscore
が50以上かを判定
□ □ □ 「合格です。もう少し頑張りましょう。」と出力
□ □ else文(score
が50未満の場合)
□ □ □ 「不合格です。再試験が必要です。」と出力
- ヒント2【穴埋め問題にする】
-
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
import java.util.Scanner; // 入力を受け取るためのScannerクラスをインポート public class TestScore { // テストの点数による評価を行うクラス public static void main(String[] args) { // スキャナークラスのインスタンスを作成し、ユーザー入力を受け取る準備 Scanner scanner = new Scanner(System.in); // テストの点数を入力するように指示を表示 System.out.print("テストの点数を入力してください(0~100): "); // 入力された点数を整数型で取得 int score = scanner.nextInt(); /* 【穴埋め問題1】 ここでif文を使ってscoreの値に応じて異なるメッセージを表示するコードを書いてください。 */ } }
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
練習問題の解答と解説
この問題の正解コードとその解説は以下の通りです。
クリックして開いて確認してください。
- 正解コード
-
import java.util.Scanner; // 入力を受け取るためのScannerクラスをインポート public class TestScore { // テストの点数による評価を行うクラス public static void main(String[] args) { // スキャナークラスのインスタンスを作成し、ユーザー入力を受け取る準備 Scanner scanner = new Scanner(System.in); // テストの点数を入力するように指示を表示 System.out.print("テストの点数を入力してください(0~100): "); // 入力された点数を整数型で取得 int score = scanner.nextInt(); // if文による分岐処理を使って、点数に応じたメッセージを表示 if (score >= 90) { // 90点以上の場合のメッセージ System.out.println("素晴らしい!優秀な成績です。"); } else if (score >= 70) { // 70点以上90点未満の場合のメッセージ System.out.println("よくできました!"); } else if (score >= 50) { // 50点以上70点未満の場合のメッセージ System.out.println("合格です。もう少し頑張りましょう。"); } else { // 50点未満の場合のメッセージ System.out.println("不合格です。再試験が必要です。"); } } }
- 正解コードの解説
-
コードをブロックごとに分割して解説します。
必要なクラスのインポート
import java.util.Scanner;
このコードではユーザーからの入力を受け取るために
Scanner
クラスを使用します。Scanner
クラスをインポートすることで、キーボードからのデータ入力が可能になります。メインクラスとメソッドの定義
public class TestScore { public static void main(String[] args) {
TestScore
というクラスを定義し、main
メソッド内でプログラムの処理を行います。main
メソッドはJavaプログラムの開始点です。ユーザーからの入力受付とメッセージ表示
Scanner scanner = new Scanner(System.in); System.out.print("テストの点数を入力してください(0~100): "); int score = scanner.nextInt();
ここでは
Scanner
クラスのインスタンスscanner
を作成し、nextInt()
メソッドを使用してユーザーが入力した整数値(テストの点数)を取得します。System.out.print
でメッセージを表示し、ユーザーに点数の入力を促しています。分岐処理による点数評価
ここがプログラムのメインの処理部分です。
点数に応じて異なる評価メッセージを表示するために、
if
文を使用して条件分岐を行います。if (score >= 90) { System.out.println("素晴らしい!優秀な成績です。"); } else if (score >= 70) { System.out.println("よくできました!"); } else if (score >= 50) { System.out.println("合格です。もう少し頑張りましょう。"); } else { System.out.println("不合格です。再試験が必要です。"); }
この部分では入力された点数(
score
)に応じて、以下のように分岐処理が行われます。- 90点以上:
if (score >= 90)
がtrue
の場合、"素晴らしい!優秀な成績です。"
と表示されます。 - 70点以上90点未満:
else if (score >= 70)
がtrue
の場合、"よくできました!"
と表示されます。 - 50点以上70点未満:
else if (score >= 50)
がtrue
の場合、"合格です。もう少し頑張りましょう。"
と表示されます。 - 50点未満: どの条件にも当てはまらない場合(つまり50点未満の場合)、
else
文の処理が実行され、"不合格です。再試験が必要です。"
と表示されます。
- 90点以上:
まとめ
このコードは基本的なユーザー入力と条件分岐の使い方を学ぶための良い例です。
Scanner
クラスによる入力処理と、if
文を使った条件分岐の仕組みを理解することで、さまざまな入力に応じた応答を行えるようになります。
次はこの基本を活用して異なる条件を増やしたり、複雑なロジックを追加する練習をしてみましょう!