Java Academy · Lektion

Kapslade ternära operatorer

Kedja beslut med eftertanke

Lektion 2 av 413 steg

Kapslade ternära operatorer är en gratis lektion i Java Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Java Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Java Academy innehåller totalt 4 lektioner.

Vad är en nästlad ternär operator?

En nästlad ternär operator placerar en annan ternär operator i en av sina grenar.

Det gör att ni kan välja mellan tre eller fler resultat i stället för bara två.

Resultatet blir en kedja av villkor som utvärderas från vänster till höger.

int score = 75;
String grade = score >= 90 ? "A" : score >= 80 ? "B" : "C";

Så grupperas den

Den ternära operatorn är högerassociativ. Det innebär att den falska grenen omfattar resten av kedjan.

Alltså tolkas a ? x : b ? y : z som a ? x : (b ? y : z).

Varje : lämnar över till nästa villkor.

// reads as: a ? x : (b ? y : z)
String r = false ? "x" : true ? "y" : "z"; // r = "y"

Ett val mellan tre alternativ

Här klassificeras ett tal som negativt, noll eller positivt.

Det första villkoret kontrollerar om talet är negativt; i den falska grenen kontrolleras om det är noll eller positivt.

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);
    }
}

Betygsexempel

Ett klassiskt användningsområde är att omvandla ett resultat till ett bokstavsbetyg.

Varje villkor kontrolleras i ordning tills ett är sant, och motsvarande bokstav returneras.

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);
    }
}

Ordningen spelar roll

Villkoren testas uppifrån och ned, så placera det mest specifika eller högsta intervallet först.

Om ni kontrollerade score >= 70 före score >= 90 skulle resultatet 95 felaktigt stanna vid den första matchningen.

// wrong order: 95 would match >= 70 first
int score = 95;
String g = score >= 70 ? "C" : score >= 90 ? "A" : "F"; // g = "C"!

Lägga till parenteser för tydlighet

Java kräver inte parenteser, men de gör nästlingen tydlig för läsaren.

Genom att omge varje inre ternär operator med parenteser visas exakt hur grenarna hör ihop.

int n = 5;
String s = n < 0 ? "neg" : (n == 0 ? "zero" : "pos");

Formatera över flera rader

Långa kedjor blir lättare att läsa när varje villkor står på en egen rad.

Justera ? och : så att strukturen ser ut som en stege.

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);
    }
}

Nästling i den sanna grenen

Ni kan även nästla i den sanna grenen, även om det är mindre vanligt och svårare att läsa.

När ni gör det rekommenderas parenteser starkt för att undvika förvirring.

boolean a = true, b = false;
String r = a ? (b ? "both" : "only a") : "neither";

Returnera en nästlad ternär operator

En metod kan returnera ett resultat med flera möjliga utfall med hjälp av en enda nästlad ternär operator.

Det förblir läsbart för tre eller fyra fall, men blir rörigt med fler än så.

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));
    }
}

Veta när det är dags att sluta

Två nästlingsnivåer brukar fungera bra. Tre eller fler blir ofta svåra att följa.

När en kedja blir lång är en if/else if-kedja eller en switch tydligare och enklare att felsöka.

Följa en kedja

Följ den här kedjan steg för steg: med day = 6 är det första villkoret falskt och det andra sant.

Resultatet blir alltså "Saturday" utan att resten kontrolleras.

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);
    }
}

Snabbkontroll

Testa hur nästlade ternära operatorer grupperas.

Sammanfattning

Nästlade ternära operatorer kedjar villkor för att välja mellan tre eller fler värden.

De är högerassociativa, så den falska grenen omfattar resten. Ordna därför villkoren noggrant.

Lägg till parenteser och radbrytningar för tydlighet, och byt till if/else när kedjorna blir långa.

Gratis att börja

Lär dig Java med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
104
Lektioner
374

Vanliga frågor

Är lektionen ”Kapslade ternära operatorer” gratis?

Ja – hela texten till ”Kapslade ternära operatorer” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Java Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Java Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Kapslade ternära operatorer”?

Kedja beslut med eftertanke Ni övar på Java Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Java Academy?

Du behöver inga förkunskaper. Utbildningen i Java Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Kapslade ternära operatorer”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Java Academy-lektionen?

Ja. Varje Java Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Den ternära operatorn
  2. Kapslade ternära operatorer
  3. Ternär operator kontra if/else
  4. Fallgropar för läsbarhet
← Tillbaka till Java Academy