条件演算子をやさしく理解する
難しく感じるかもしれないけど、これは「条件によって返す値を切り替えるための、短い書き方」。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行で意味が伝わるか
- 条件が直感的か(例:
>=や==の向きが自然か)
