Java Academy · Lektion

Cases med flere labels

Gruppér flere labels

Lektion 4 af 413 trin

Cases med flere labels er en gratis Java Academy-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Java Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Java Academy-kurset indeholder 4 lektioner i alt.

Gruppering af etiketter

Ofte skal flere værdier udløse den samme handling. Moderne switch lader dig angive flere etiketter i samme case, adskilt af kommaer, så de deler én gren.

Kommaseparerede etiketter

Skriv værdierne efter hinanden, adskilt af kommaer, før ->. Hvis en af dem matcher, udføres grenen.

public class Main {
    public static void main(String[] args) {
        int day = 7;
        switch (day) {
            case 1, 2, 3, 4, 5 -> System.out.println("Weekday");
            case 6, 7 -> System.out.println("Weekend");
        }
    }
}

Vokaldetektion

Et klassisk eksempel er at gruppere alle vokaler i én gren i stedet for at skrive fem separate cases.

public class Main {
    public static void main(String[] args) {
        char c = 'o';
        switch (c) {
            case 'a', 'e', 'i', 'o', 'u' -> System.out.println("Vowel");
            default -> System.out.println("Consonant");
        }
    }
}

Flere etiketter i udtryk

Cases med flere etiketter fungerer også i switch-udtryk, hvor den samme værdi returneres for alle de angivne etiketter.

public class Main {
    public static void main(String[] args) {
        int month = 7;
        String season = switch (month) {
            case 12, 1, 2 -> "Winter";
            case 3, 4, 5 -> "Spring";
            case 6, 7, 8 -> "Summer";
            default -> "Autumn";
        };
        System.out.println(season);
    }
}

Grupperede String-etiketter

String-værdier kan også grupperes. Her omsættes flere stavemåder for en kommando til én handling.

public class Main {
    public static void main(String[] args) {
        String cmd = "quit";
        switch (cmd) {
            case "quit", "exit", "q" -> System.out.println("Closing");
            case "help", "h" -> System.out.println("Showing help");
            default -> System.out.println("Unknown command");
        }
    }
}

Grupperede enum-etiketter

Enum-konstanter kan også dele en gren, hvilket holder kategorilogikken kompakt.

public class Main {
    enum Day { MON, TUE, WED, THU, FRI, SAT, SUN }
    public static void main(String[] args) {
        Day d = Day.SAT;
        String kind = switch (d) {
            case SAT, SUN -> "Rest";
            default -> "Work";
        };
        System.out.println(kind);
    }
}

Ingen duplikerede etiketter

Hver etiket må kun forekomme én gang i hele switch-sætningen. Hvis du angiver den samme værdi i to grene, er det en kompileringsfejl, fordi compileren ikke kan afgøre, hvilken gren der skal køres.

public class Main {
    public static void main(String[] args) {
        int n = 2;
        switch (n) {
            case 1, 2 -> System.out.println("Low");
            case 3, 4 -> System.out.println("High");
            default -> System.out.println("Other");
        }
    }
}

Sammenlignet med gammelt gennemfald

I den gamle stil med kolon krævede gruppering tomme gennemfaldscases, der stod oven over én fælles krop. Kommasyntaksen er langt tydeligere og forhindrer utilsigtet gennemfald.

public class Main {
    public static void main(String[] args) {
        int code = 3;
        switch (code) {
            case 1, 3, 5, 7, 9 -> System.out.println("Odd");
            case 0, 2, 4, 6, 8 -> System.out.println("Even");
        }
    }
}

Gruppering med blokke

Et grupperet case kan også bruge en blok som krop. Alle matchende etiketter udfører hele blokken.

public class Main {
    public static void main(String[] args) {
        char grade = 'B';
        switch (grade) {
            case 'A', 'B' -> {
                System.out.println("Pass");
                System.out.println("Well done");
            }
            default -> System.out.println("Try again");
        }
    }
}

Kombination med yield

Grupperede etiketter og yield fungerer sammen, når en fælles gren har brug for beregninger.

public class Main {
    public static void main(String[] args) {
        int n = 4;
        int points = switch (n) {
            case 1, 2, 3 -> 10;
            case 4, 5, 6 -> {
                int bonus = n * 2;
                yield 20 + bonus;
            }
            default -> 0;
        };
        System.out.println(points);
    }
}

Fordel for læsbarheden

Cases med flere etiketter forkorter lange lister af gentagne grene til nogle få tydelige grupper, så hensigten er åbenlys ved første øjekast.

public class Main {
    public static void main(String[] args) {
        int http = 204;
        String group = switch (http / 100) {
            case 1, 2, 3 -> "OK-ish";
            case 4, 5 -> "Error";
            default -> "Unknown";
        };
        System.out.println(group);
    }
}

Hurtigt tjek

Hvordan får du flere værdier til at køre den samme switch-gren i moderne Java?

Opsummering

Du har lært cases med flere etiketter:

  • Angiv værdierne kommasepareret før ->
  • Det fungerer med ints, chars, Strings og enums
  • Intet utilsigtet gennemfald i modsætning til den gamle stil
  • Hver etiket må forekomme kun én gang
  • Kombiner med blokke og yield efter behov
Gratis at komme i gang

Lær Java med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
104
Lektioner
374

Ofte stillede spørgsmål

Er lektionen “Cases med flere labels” gratis?

Ja — hele teksten til “Cases med flere labels” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Java Academy-kurset, skal du opgradere til CoddyKit PRO. Java Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Cases med flere labels”?

Gruppér flere labels Du øver dig i Java Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Java Academy?

Der kræves ingen tidligere erfaring. Java Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.

Hvor lang tid tager lektionen “Cases med flere labels”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Java Academy-lektion?

Ja. Alle Java Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Switch med pil-syntaks
  2. switch som udtryk
  3. Nøgleordet yield
  4. Cases med flere labels
← Tilbage til Java Academy