コース一覧
    Java入門:条件分岐
    成績判定プログラム

    Java入門:条件分岐

    条件分岐の書き方を学び、入力や条件に応じて処理を選べるプログラムを作れるようにします。

    1
    条件分岐
    01. if 文の基本5分
    02. if-else 文5分
    03. else if で複数分岐5分
    04. 成績判定プログラム12分
    05. うるう年を判定する5分
    06. switch 文5分
    07. 三項演算子5分
    08. じゃんけんの勝敗判定15分
    09. FizzBuzz の判定部分5分
    10. 第 3 章 まとめクイズ5分

    成績判定プログラム

    ゆるい条件を先に置くと、全員そこで止まる

    if と else では 2 つにしか割れません。3 段階、5 段階と増やしたいときは else if をはさみます。ただしここで並べる順番を間違えると、どんな値を渡しても同じ答えが返るコードができあがります。

    荷物の重さから大きさの区分を返す例で見てみます。

    Java

    public class Parcel {
        public static String size(int gram) {
            if (gram >= 1000) {
                return "中型";
            } else if (gram >= 3000) {
                return "大型";
            }
            return "小型";
        }
    }

    size(5000) を呼ぶと "中型" が返ります。5 キロの荷物です。最初の gram >= 1000 がいきなり成立して return に届いてしまうので、下の gram >= 3000 は評価すらされません。

    else if の連鎖は、上から順に見ていって 最初に当たった枝だけ を実行します。範囲が重なっているときは、当てはまる値が少ないほうを先に書きます。この例なら 2 つの枝を入れ替えるだけで直ります。

    Java

    if (gram >= 3000) {
        return "大型";
    } else if (gram >= 1000) {
        return "中型";
    }
    return "小型";

    上から 3000 1000 と、しきい値が下がっていく並びになりました。>= で書くなら大きい順、<= で書くなら小さい順です。

    「以上」と「より大きい」は 1 文字違う

    もう 1 つの落とし穴は境界です。同じしきい値でも、記号が 1 文字違うだけで答えが変わります。

    Java

    gram >= 1000   // 1000 を含む
    gram > 1000    // 1000 を含まない

    仕様に「1000 グラム以上」と書いてあれば >=、「1000 グラムより重い」なら > です。テストはこの境界をピンポイントで狙ってきます。日本語と記号を必ずペアで覚えてください。

    解説

    会員ランク、送料区分、料金プラン。数値の範囲でラベルを決める処理は現場のあちこちに出てきます。並べ方と境界の話は、そのすべてで同じように効きます。

    最後の受け皿が無いとコンパイルが通らない

    戻り値のあるメソッドで else if を並べただけで終わると、どの枝にも当たらない道が残ります。この状態は missing return statement として弾かれます。

    最後は else で受けるか、上の例のように条件を付けない return を 1 行置いて締めます。どちらでも構いませんが、通り抜ける道を残さないことだけは必ず守ります。

    やってみよう

    getGrade(int score) を完成させて、点数から "A" "B" "C" "D" "F" のどれかを返してください。

    1. 90 / 80 / 70 / 60 の 4 つのしきい値を、大きいほうから順に並べる
    2. 「以上」なので >= を使う
    3. どのしきい値にも届かなかったときの答えを最後に置く
    4. 実行して 95 85 75 65 45 の 5 件を通す

    通ったら、getGrade(90) と getGrade(89)、getGrade(60) と getGrade(59) のように境界の両側を呼んでみてください。1 文字の書き間違いは、この 4 回の呼び出しで必ず表に出ます。

    要件

    1. 90点以上: A
    2. 80点以上: B
    3. 70点以上: C
    4. 60点以上: D
    5. 60点未満: F

    ヒント

    if-else ifを使います

    条件は上から順に評価されます

    判定は `if (score >= 90)` を最上段に置き、`>= 80`、`>= 70`、`>= 60` の順に下へ並べると重複なくきれいに切れます。逆に `>= 60` を最初に書くと、95 点でも `D` 判定が先にマッチしてしまうので注意してください

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2025/12/19·更新 2026/08/26

    関連レッスン

    • うるう年を判定する

      `&&` と `||` を組み合わせて、実用的な条件「うるう年かどうか」を 1 行で判定するメソッドを書いてみよう。

    • switch 文

      値による多分岐を簡潔に書く switch 文を学び、case と break、default の使い方をマスターしよう。

    • 三項演算子

      Java の三項演算子 `条件 ? 真の値 : 偽の値` を使って、if-else を 1 行で書けるようになろう。

    • じゃんけんの勝敗判定

      複数の `if` を組み合わせて、3 すくみの勝敗を判定するロジックを書こう。

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • 評価出力品質を数値化して継続改善する活動
    • テストバグを見つける工程
    • 処理計算や代入を表す長方形
    • コンパイルソースをバイトコードへ変換する処理
    • 戻り値呼び出し元への返答を表す点線矢印
    • メソッドクラスに属する関数
    main.java
    エディタを読み込んでいます

    メモ

    成績判定プログラム

    ⌘S で保存