Switch-Case-Sætning
Håndtering af flere forskellige betingelser
Når der er mange betingelser, der skal kontrolleres, er det ikke altid hensigtsmæssigt at bruge flere if-else kæder.
For eksempel:
Main.java
12345678910111213141516171819package com.example; public class Main { public static void main(String[] args) { // You can change the value of the variable `a` to test the `if` statement int a = 30; if (a == 10) { System.out.println(10); } else if (a == 20) { System.out.println(20); } else if (a == 30) { System.out.println(30); } else if (a == 40) { System.out.println(40); } else { System.out.println(a); } } }
Vi kan se, at dette ikke fremstår overskueligt eller professionelt. Til sådanne tilfælde tilbyder Java switch-case-sætningen.
switch-case-sætning
switch-case-sætningen består af flere dele:
Main.java
123456789switch (expression) { case value_1: // Code to be executed if expression matches `value_1` break; // Break is used to exit the `switch` statement. case value_2: // Code to be executed if expression matches `value_2` break; // Break is used to exit the `switch` statement. ............ default: // Code to be executed if no cases match // Optional, but executed if no other case matches }
I koden ovenfor ses det, at switch-blokke anvendes til selektiv udførelse af operationer. Her benyttes et udtryk, hvilket adskiller sig en smule fra en betingelse. I dette tilfælde indsættes en værdi eller et udtryk, for eksempel 10 / 2. Her vil case-blokken med signaturen case 5 blive udført, da udtrykket ovenfor er lig med 5.
Det er også muligt at anvende en betingelse her. I så fald skal der skrives et boolesk udtryk i udtryksblokken, hvilket kan se således ud: 10 / 2 == 5. Derefter skrives to cases nedenfor:
case true:
case false:
Denne struktur vil dog næsten ikke kunne skelnes fra en almindelig if-else.
Nøgleordet "break"
Dette nøgleord anvendes til at afslutte udførelsen af en switch-case-sætning og forlade dens blok. Ordet bruges ofte i løkker, hvilket gennemgås i de følgende kapitler. Anvend dette nøgleord, når det er nødvendigt at afbryde en kodeblok og stoppe dens udførelse.
Lad os nu forbedre koden, vi skrev ovenfor, ved at bruge switch-case-sætningen:
Main.java
123456789101112131415161718192021222324package com.example; public class Main { public static void main(String[] args) { // You can change the value of the variable `a` to test the `switch` statement int a = 30; switch (a) { case 10: System.out.println(10); break; case 20: System.out.println(20); break; case 30: System.out.println(30); break; case 40: System.out.println(40); break; default: System.out.println("There is no matching value"); } } }
Vi kan se, hvordan koden er blevet meget mere overskuelig og lettere at læse og udvide. Vi behøver ikke at skrive endnu en if-sætning fra bunden, hvis vi skal tilføje flere betingelser. I stedet kan vi tilføje endnu et case-blok til vores switch-case statement.
Lad os se på skemaet for switch-case blokken:
Som vi kan se, kan der være så mange cases, som vi ønsker. Hver case kræver sin egen betingelse og kode, som vil blive udført, når vores program går ind i case-blokken.
Det anbefales at bruge break-nøgleordet, fordi programmet ikke forlader switch-blokken, før alle case-blokke er blevet udført. Default-blokken vil blive udført, hvis vi ikke gik ind i nogen af vores case-blokke eller ikke brugte break-nøgleordet.
Lad os se på et andet eksempel uden break-nøgleord:
Main.java
1234567891011121314151617181920package com.example; public class Main { public static void main(String[] args) { // You can change the value of the variable `a` to test the `switch` statement int a = 10; switch (a) { case 10: System.out.println(10); case 20: System.out.println(20); case 30: System.out.println(30); case 40: System.out.println(40); default: System.out.println("There is no matching value"); } } }
Vi har modtaget flere værdier, som adskiller sig fra det forventede. Derudover har vi fået information fra blokkene case 10 og default. Det er netop derfor, vi bruger nøgleordet break efter hver blok. På denne måde forlader programmet switch-sætningen og fortsætter sin eksekvering.
1. Hvad vil blive vist i konsollen?
2. Hvorfor har vi brug for nøgleordet break?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Can you explain the difference between the classic and new switch syntax in Java?
What happens if I forget to use the break statement in a switch-case?
Can you give more examples of when to use switch-case instead of if-else?
Fantastisk!
Completion rate forbedret til 2.7
Switch-Case-Sætning
Stryg for at vise menuen
Håndtering af flere forskellige betingelser
Når der er mange betingelser, der skal kontrolleres, er det ikke altid hensigtsmæssigt at bruge flere if-else kæder.
For eksempel:
Main.java
12345678910111213141516171819package com.example; public class Main { public static void main(String[] args) { // You can change the value of the variable `a` to test the `if` statement int a = 30; if (a == 10) { System.out.println(10); } else if (a == 20) { System.out.println(20); } else if (a == 30) { System.out.println(30); } else if (a == 40) { System.out.println(40); } else { System.out.println(a); } } }
Vi kan se, at dette ikke fremstår overskueligt eller professionelt. Til sådanne tilfælde tilbyder Java switch-case-sætningen.
switch-case-sætning
switch-case-sætningen består af flere dele:
Main.java
123456789switch (expression) { case value_1: // Code to be executed if expression matches `value_1` break; // Break is used to exit the `switch` statement. case value_2: // Code to be executed if expression matches `value_2` break; // Break is used to exit the `switch` statement. ............ default: // Code to be executed if no cases match // Optional, but executed if no other case matches }
I koden ovenfor ses det, at switch-blokke anvendes til selektiv udførelse af operationer. Her benyttes et udtryk, hvilket adskiller sig en smule fra en betingelse. I dette tilfælde indsættes en værdi eller et udtryk, for eksempel 10 / 2. Her vil case-blokken med signaturen case 5 blive udført, da udtrykket ovenfor er lig med 5.
Det er også muligt at anvende en betingelse her. I så fald skal der skrives et boolesk udtryk i udtryksblokken, hvilket kan se således ud: 10 / 2 == 5. Derefter skrives to cases nedenfor:
case true:
case false:
Denne struktur vil dog næsten ikke kunne skelnes fra en almindelig if-else.
Nøgleordet "break"
Dette nøgleord anvendes til at afslutte udførelsen af en switch-case-sætning og forlade dens blok. Ordet bruges ofte i løkker, hvilket gennemgås i de følgende kapitler. Anvend dette nøgleord, når det er nødvendigt at afbryde en kodeblok og stoppe dens udførelse.
Lad os nu forbedre koden, vi skrev ovenfor, ved at bruge switch-case-sætningen:
Main.java
123456789101112131415161718192021222324package com.example; public class Main { public static void main(String[] args) { // You can change the value of the variable `a` to test the `switch` statement int a = 30; switch (a) { case 10: System.out.println(10); break; case 20: System.out.println(20); break; case 30: System.out.println(30); break; case 40: System.out.println(40); break; default: System.out.println("There is no matching value"); } } }
Vi kan se, hvordan koden er blevet meget mere overskuelig og lettere at læse og udvide. Vi behøver ikke at skrive endnu en if-sætning fra bunden, hvis vi skal tilføje flere betingelser. I stedet kan vi tilføje endnu et case-blok til vores switch-case statement.
Lad os se på skemaet for switch-case blokken:
Som vi kan se, kan der være så mange cases, som vi ønsker. Hver case kræver sin egen betingelse og kode, som vil blive udført, når vores program går ind i case-blokken.
Det anbefales at bruge break-nøgleordet, fordi programmet ikke forlader switch-blokken, før alle case-blokke er blevet udført. Default-blokken vil blive udført, hvis vi ikke gik ind i nogen af vores case-blokke eller ikke brugte break-nøgleordet.
Lad os se på et andet eksempel uden break-nøgleord:
Main.java
1234567891011121314151617181920package com.example; public class Main { public static void main(String[] args) { // You can change the value of the variable `a` to test the `switch` statement int a = 10; switch (a) { case 10: System.out.println(10); case 20: System.out.println(20); case 30: System.out.println(30); case 40: System.out.println(40); default: System.out.println("There is no matching value"); } } }
Vi har modtaget flere værdier, som adskiller sig fra det forventede. Derudover har vi fået information fra blokkene case 10 og default. Det er netop derfor, vi bruger nøgleordet break efter hver blok. På denne måde forlader programmet switch-sætningen og fortsætter sin eksekvering.
1. Hvad vil blive vist i konsollen?
2. Hvorfor har vi brug for nøgleordet break?
Tak for dine kommentarer!