Java | 条件演算子(三項演算子)

Java Java
スポンサーリンク

条件演算子をやさしく理解する

難しく感じるかもしれないけど、これは「条件によって返す値を切り替えるための、短い書き方」。if文のミニ版だと思ってください。


基本のかたちと考え方

  • 書式:
条件式 ? 値1 : 値2
Java
  • 意味:
    • 条件式が true(条件を満たす)なら「値1」を返す
    • 条件式が false(条件を満たさない)なら「値2」を返す
  • イメージ:
    • 「もし~ならA、そうでなければB」と言いたいときに、1行でスッと書けるスイッチ

いつ使うと便利か

  • 値を決めるだけの場面: 変数に入れる文字列や数値を、条件で切り替えたいとき
  • 表示文の中で判定したい: printlnの中で「OK/NG」を切り替えるなど
  • 短く読みやすくしたい: if文だと3~5行かかる処理を1行にする

反対に「複数の処理」「変数をいくつも変更」「ログ出力などの副作用」があるなら、条件演算子ではなく if 文を使う方が読みやすいです。


例題で身につける

例題1: 合格・不合格の表示

int score = 76;
String result = (score >= 70) ? "合格" : "不合格";
System.out.println(result); // 合格
Java
  • ポイント: 値(文字列)を決めるだけならとてもスッキリ。

例題2: 送料の条件分岐(3000円以上で無料)

int total = 2800;
int shipping = (total >= 3000) ? 0 : 500;
System.out.println("送料: " + shipping + "円"); // 送料: 500円
Java
  • ポイント: 数値も同じように切り替えられる。

例題3: 偶数・奇数のラベル

int n = 15;
String label = (n % 2 == 0) ? "偶数" : "奇数";
System.out.println(label); // 奇数
Java
  • ポイント: 条件式には比較や計算が書ける。

例題4: ネスト(入れ子)は最小限に

int temp = 32;
String state = (temp >= 35) ? "猛暑"
              : (temp >= 30) ? "真夏日"
              : (temp >= 25) ? "夏日"
              : "平年並み";
System.out.println(state); // 真夏日
Java
  • ポイント: こういう「段階的」判定も書けるけど、複雑なら if 文の方が読みやすい。

if文との置き換え感覚

  • if文版(同じ処理):
String result;
if (score >= 70) {
    result = "合格";
} else {
    result = "不合格";
}
Java
  • 条件演算子版:
String result = (score >= 70) ? "合格" : "不合格";
Java
  • 使い分けの目安:
    • 値1つを決めたいだけ: 条件演算子
    • 複数の処理やステップ: if文

つまずきやすいポイント

  • 型をそろえる:
    • 式1と式2は同じ型(または互換の型)にする
    • 例: 片方が文字列、片方が数値は不可
  • 副作用を入れない:
    • ? の中でメソッド呼び出しや複雑な処理をしすぎると読みにくい
  • 読みやすさ優先:
    • ネスト(入れ子)しすぎると理解が難しくなる。2段までが目安

練習問題

練習1: 年齢で料金を切り替え

  • 条件: 12歳以下は200円、それ以外は500円
  • 自分で書いてみる:
int age = 10;
int price = (age <= 12) ? 200 : 500;
System.out.println(price);
Java

練習2: 合計金額でポイント倍率

  • 条件: 5000円以上は2倍、それ以外は1倍
  • 自分で書いてみる:
int total = 6200;
int rate = (total >= 5000) ? 2 : 1;
System.out.println("ポイント倍率: " + rate + "倍");
Java

練習3: 入力文字の空チェック

  • 条件: 空文字なら「未入力」、それ以外は「入力OK」
  • 自分で書いてみる:
String name = "";
String status = (name.isEmpty()) ? "未入力" : "入力OK";
System.out.println(status);
Java

実践でのコツ

  • 表示の中で使う:
System.out.println("結果: " + (score >= 70 ? "合格" : "不合格"));
Java
  • 関数の戻り値に使う:
static String gradeLabel(int score) {
    return (score >= 90) ? "A" : (score >= 80) ? "B" : "C";
}
Java
  • 読みやすさチェック:
    • 1行で意味が伝わるか
    • 条件が直感的か(例: >=== の向きが自然か)
Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました