【JAVA】レッスン2-02:if文による分岐処理を理解しよう

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:分岐処理(if文)

この記事の練習問題で使用する知識:
基礎構文(レッスン1)、比較演算子と論理演算子、分岐処理(if文)分岐処理(switch文)繰り返し処理(for文)繰り返し処理(while文)繰り返しの制御配列エラーメッセージ例外処理の基礎

<<前の問題 問題集Top 次の問題>>

JAVAの「if文による分岐処理(条件分岐)」とは

この章ではJAVAにおける「if文による分岐処理」の意味や使い方を学習します。必要ない方はここをクリックして練習問題へ飛びましょう。

プログラミングにおいて条件に応じて処理を変更することは重要な技術の一つです。

Javaでは条件に従ってプログラムの流れを変えるための「分岐処理」として if 文や if-elseelse if 文が使用されます。

この節では各分岐の使い方について学んでいきます。

if文による分岐処理

if 文は指定された条件が「真(true)」の場合にのみ、特定の処理を実行します。

基本的な構文は以下の通りです。

if (条件) {
    // 条件が真のとき実行されるコード
}

例えば変数 a が10より大きい場合にメッセージを表示するコードは以下のように書けます。

int a = 15;
if (a > 10) {
    System.out.println("aは10より大きいです");
}

この例ではa が10より大きいので、"aは10より大きいです" と出力されます。

aの値を5に変更すると、何も出力されません。

if-else文による分岐

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以下です" が表示されます。

実例コードと解説

ここでは実際に ifif-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 文、そして else if 文は、Javaで条件に応じた処理を実行するための重要な文法です。

複数の条件を扱う場合や条件が偽の場合の処理も簡単に書けるようになります。

次の章ではさらに多くの条件分岐ができる switch 文について学び、条件ごとの処理をより柔軟にしていきましょう。

練習問題2-2:テストの点数に応じたメッセージを表示するプログラムを作成しよう

テストの点数に応じて異なるメッセージを表示するプログラムを作成しましょう。

ユーザーから入力された点数に基づいて、分岐処理を用いて異なるメッセージを表示します。

点数が90点以上なら「素晴らしい!優秀な成績です。」、70点以上90点未満なら「よくできました!」、50点以上70点未満なら「合格です。もう少し頑張りましょう。」、50点未満なら「不合格です。再試験が必要です。」と表示しましょう。

この問題の要件

以下の要件に従ってコードを完成させてください。

  • Scannerクラスを使用して、ユーザーが入力する点数(0~100の整数)を受け取ること。
  • 点数に応じて以下の条件に基づきメッセージを表示すること。
    • 90点以上:"素晴らしい!優秀な成績です。"
    • 70点以上90点未満:"よくできました!"
    • 50点以上70点未満:"合格です。もう少し頑張りましょう。"
    • 50点未満:"不合格です。再試験が必要です。"
  • 必要に応じて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("不合格です。再試験が必要です。");
        }
    }
}

正解コードの解説

このコードはテストの点数に応じて異なるメッセージを表示するプログラムです。

ユーザーから点数を入力してもらい、その点数が0から100の間であることを前提に評価を行います。

必要なクラスのインポート

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文の処理が実行され、"不合格です。再試験が必要です。"と表示されます。

まとめ

このコードは基本的なユーザー入力と条件分岐の使い方を学ぶための良い例です。

Scannerクラスによる入力処理と、if文を使った条件分岐の仕組みを理解することで、さまざまな入力に応じた応答を行えるようになります。

次はこの基本を活用して異なる条件を増やしたり、複雑なロジックを追加する練習をしてみましょう!

<<前の問題 問題集Top 次の問題>>

この記事への質問・コメント

この記事を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    JAVAテキスト&問題集へ戻る
    トップページへ戻る