三項演算子のネスト
条件分岐を慎重につなげます。
「三項演算子のネスト」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全4レッスンが含まれています。
ネストした三項演算子とは
ネストした三項演算子とは、分岐の1つの中に別の三項演算子を置くことです。
これにより、2つだけでなく3つ以上の結果から選べます。
結果は条件の連鎖となり、左から右へ評価されます。
int score = 75;
String grade = score >= 90 ? "A" : score >= 80 ? "B" : "C";グループ化の仕組み
三項演算子は右結合です。つまり、false の分岐が連鎖の残りを取り込みます。
そのため、a ? x : b ? y : z は a ? x : (b ? y : z) と解釈されます。
各 : によって、次の条件へ処理が引き渡されます。
// reads as: a ? x : (b ? y : z)
String r = false ? "x" : true ? "y" : "z"; // r = "y"3方向の選択
ここでは、数値を負、ゼロ、正のいずれかに分類します。
最初の条件で負かどうかを確認し、false の分岐でゼロと正のどちらかを確認します。
public class Main {
public static void main(String[] args) {
int n = 0;
String sign = n < 0 ? "negative" : n == 0 ? "zero" : "positive";
System.out.println(sign);
}
}成績判定の例
よくある使い方は、スコアを英字の成績に対応付けることです。
条件を順番に確認し、true になった時点で対応する英字が返されます。
public class Main {
public static void main(String[] args) {
int score = 83;
String grade = score >= 90 ? "A"
: score >= 80 ? "B"
: score >= 70 ? "C" : "F";
System.out.println(grade);
}
}順序が重要
条件は上から下へテストされるため、最も具体的な条件または最も高い範囲を先に置きます。
score >= 90 より前に score >= 70 を確認すると、スコアが95の場合、最初の一致で誤って処理が止まります。
// wrong order: 95 would match >= 70 first
int score = 95;
String g = score >= 70 ? "C" : score >= 90 ? "A" : "F"; // g = "C"!明確さのためにかっこを追加
Java ではかっこは必須ではありませんが、読み手にネスト構造を明確に示せます。
各内側の三項演算子をかっこで囲むと、分岐がどのように対応しているかが正確に分かります。
int n = 5;
String s = n < 0 ? "neg" : (n == 0 ? "zero" : "pos");複数行での整形
長い連鎖は、各条件をそれぞれの行に置くと読みやすくなります。
構造がはしごのように見えるように、? と : の位置をそろえます。
public class Main {
public static void main(String[] args) {
int temp = 22;
String label = temp >= 30 ? "hot"
: temp >= 20 ? "warm"
: temp >= 10 ? "cool"
: "cold";
System.out.println(label);
}
}true の分岐でのネスト
true の分岐の中にもネストできますが、一般的ではなく、読みにくくなります。
そうする場合は、混乱を避けるためにかっこを強く推奨します。
boolean a = true, b = false;
String r = a ? (b ? "both" : "only a") : "neither";ネストした三項演算子を返す
メソッドは、ネストした三項演算子を1つ使って、複数の結果のうち1つを返せます。
3つまたは4つのケースであれば読みやすさを保てますが、それを超えると複雑になります。
public class Main {
static String size(int len) {
return len < 5 ? "short" : len < 10 ? "medium" : "long";
}
public static void main(String[] args) {
System.out.println(size(7));
}
}使いどころを見極める
通常、2段階のネストであれば問題ありません。3段階以上になると、理解しにくくなることがよくあります。
連鎖が長くなったら、if/else if のはしごや switch の方が明確で、デバッグもしやすくなります。
連鎖を追跡する
この連鎖を手作業で追ってみましょう。day = 6 の場合、最初の条件は false で、2番目の条件は true です。
そのため、残りを確認することなく結果は "Saturday" になります。
public class Main {
public static void main(String[] args) {
int day = 6;
String name = day == 7 ? "Sunday"
: day == 6 ? "Saturday" : "Weekday";
System.out.println(name);
}
}クイックチェック
ネストした三項演算子がどのようにグループ化されるか確認しましょう。
まとめ
ネストした三項演算子は条件を連鎖させ、3つ以上の値から1つを選びます。
右結合であるため、false の分岐が残りを取り込みます。条件の順序には注意してください。
明確さのためにかっこと改行を追加し、連鎖が長くなったら if/else に切り替えます。
よくある質問
「三項演算子のネスト」レッスンは無料ですか?
はい。「三項演算子のネスト」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全4レッスンが含まれています。
「三項演算子のネスト」で何を学びますか?
条件分岐を慎重につなげます。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Java Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「三項演算子のネスト」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このJava Academyレッスンでコードを書いて実行できますか?
はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 三項演算子
- 三項演算子のネスト
- 三項演算子とif/else
- 可読性を損なう落とし穴