コース一覧
    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分

    三項演算子

    値を 1 つ選ぶだけなのに 5 行になる

    変数に入れる値を、2 つのうちどちらかに決めたい。それだけのことを if-else で書くと、宣言と代入が離れて縦に伸びます。

    Java

    String label;
    if (age >= 20) {
        label = "大人";
    } else {
        label = "未成年";
    }

    同じことを 1 行で書けるのが三項演算子です。条件 ? 真のときの値 : 偽のときの値 という形をしています。

    Java

    String label = age >= 20 ? "大人" : "未成年";

    ? の前で条件を聞き、? の後ろに true のときの値、: の後ろに false のときの値を書きます。並びは必ずこの順で、クエスチョンが先、コロンが後です。3 つの部分を取る演算子は Java にこれ 1 つしかないので、「三項」と呼ばれます。

    文ではなく式なので、そのまま返せる

    if は文です。値を持たないので return if (...) とは書けません。三項演算子は式なので、それ自体が 1 つの値になります。だから変数への代入だけでなく、return の後ろにも、メソッドの引数の中にも、そのまま置けます。

    Java

    System.out.println(stock > 0 ? "在庫あり" : "品切れ");

    if で同じことをするなら、この 1 行のためにわざわざ変数を用意して 4 行書くことになります。処理を切り替えるのではなく値を選ぶだけなら、三項演算子のほうが読み手に優しいです。

    両側の型はそろえる

    ? の後ろと : の後ろは、同じ型にします。age >= 20 ? "大人" : 0 のように文字列と整数を混ぜると、式全体の型が決まらないためコンパイルエラーになります。

    同じ理由で、値を返さない処理も枝には置けません。cond ? System.out.println("a") : System.out.println("b") は not a statement として弾かれます。三項演算子は 値を選ぶための道具 であって、if の完全な代わりではありません。

    解説

    入れ子にもできますが、? と : が 3 組並ぶと一目では読めなくなります。2 段までが目安で、それ以上は if に戻したほうが結局速く読めます。

    やってみよう

    absoluteValue(int n) を完成させてください。if 文は使わず、三項演算子だけで書きます。

    1. n がどちら側にあるかを聞く条件を ? の前に書く
    2. ? の後ろと : の後ろに、それぞれの場合に返したい値を書く
    3. 全体を return の後ろに置いて 1 行にまとめる
    4. 実行して -5 7 0 -100 の 4 件を通す

    0 は正でも負でもありません。自分の書いた条件では 0 がどちらの枝に落ちるのか、そしてその枝を通っても答えが 0 になるのかを、実行する前に頭の中でたどってみてください。境界の 1 件を自分で説明できるようになると、条件式の読み方が一段変わります。

    要件

    1. クラス名は Solution、メソッド名は absoluteValue、引数は int n 1 つ、戻り値の型は int
    2. 三項演算子 条件 ? 真の値 : 偽の値 を使って実装すること (if 文は使わない)
    3. 負の数を渡したときは符号を反転した値 (-n) を、0 以上なら n をそのまま返すこと

    ヒント

    三項演算子の文法は `条件 ? 真の値 : 偽の値` です。`?` が先、`:` が後の順番に注意しましょう

    条件には `n >= 0` のような比較演算子を使います。`true` のときは `n` をそのまま、`false` のときは `-n` を返します

    `-n` は `n` の符号を反転させる演算です。`n = -5` のときは `-(-5) = 5` になるので、絶対値として使えます

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

    関連レッスン

    • じゃんけんの勝敗判定

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

    • FizzBuzz の判定部分

      プログラマー面接の定番問題 FizzBuzz の中核となる判定ロジックを、if-else if-else と剰余演算で組み立てよう。

    • 第 3 章 まとめクイズ

      第 3 章で学んだ if / else if / switch / 三項演算子 / うるう年 / FizzBuzz を 1 問の 4 択クイズで総復習する章末まとめ。

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

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

    • 変数データに名前をつけて参照する仕組み
    • 三項演算子値1 if 条件 else 値2 の形式。
    • 演算子//は切り捨て除算(7 // 2 = 3)。
    • メソッドクラスに属する関数
    • 引数位置引数=順番で渡す。
    • 処理計算や代入を表す長方形
    • コンパイルソースをバイトコードへ変換する処理
    • クラスデータと振る舞いを束ねる単位
    main.java
    エディタを読み込んでいます

    メモ

    三項演算子

    ⌘S で保存