Switch-Case -lause
Pyyhkäise näyttääksesi valikon
Useiden erilaisten ehtojen käsittely
Kun tarkistettavia ehtoja on paljon, useiden if-else ketjujen käyttäminen ei välttämättä ole kätevää.
Esimerkiksi:
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); } } }
Voimme huomata, että tämä ei näytä siistiltä eikä ammattimaiselta. Tällaisissa tapauksissa Java tarjoaa switch-case-lauseen.
switch-case-lause
switch-case-lause koostuu useista osista:
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 }
Yllä olevassa koodissa käytetään switch-lohkoja toimintojen valikoivaan suorittamiseen. Tässä luotetaan lausekkeeseen, joka eroaa hieman ehdosta. Siihen sijoitetaan arvo tai lauseke, esimerkiksi 10 / 2. Tässä tapauksessa suoritetaan case-lohko, jonka tunniste on case 5, koska yllä oleva lauseke on yhtä kuin 5.
Tässä voidaan käyttää myös ehtoa. Tällöin lausekelohkoon kirjoitetaan Boolean-lauseke, ja sen tulisi näyttää esimerkiksi tältä: 10 / 2 == 5. Kirjoita tämän jälkeen kaksi casea alle:
case true:
case false:
Tämä rakenne muistuttaa kuitenkin lähes tavallista if-else-rakennetta.
Avainsana "break"
Tätä avainsanaa käytetään lopettamaan switch-case-rakenteen suoritus ja poistumaan sen lohkosta. Tätä sanaa käytetään usein myös silmukoissa, joista kerrotaan seuraavissa luvuissa. Käytä tätä avainsanaa, kun haluat poistua koodilohkosta ja keskeyttää sen suorittamisen.
Parannetaan nyt aiemmin kirjoitettua koodia käyttämällä switch-case-lausetta:
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"); } } }
Voimme huomata, että koodista on tullut paljon selkeämpi ja helpompi lukea sekä laajentaa. Uutta if-lausetta ei tarvitse kirjoittaa alusta asti, jos haluamme lisätä uusia ehtoja. Sen sijaan voimme lisätä uuden case-lohkon switch-case statement-lauseeseen.
Tarkastellaan switch-case-lohkon kaaviota:
Kuten näemme, tapauksia voi olla niin monta kuin haluamme. Jokainen tapaus vaatii oman ehtonsa ja koodinsa, joka suoritetaan, kun ohjelma siirtyy kyseiseen case-lohkoon.
On suositeltavaa käyttää break-avainsanaa, koska ohjelma ei poistu switch-lohkosta ennen kuin kaikki case-lohkot on suoritettu. Oletuslohko suoritetaan, jos emme siirry mihinkään case-lohkoista tai emme käytä break-avainsanaa.
Tässä on toinen esimerkki ilman break-avainsanoja:
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"); } } }
Olemme saaneet useita arvoja, jotka poikkeavat odotetusta. Lisäksi saimme tietoa lohkoista case 10 ja default. Juuri tämän vuoksi käytämme avainsanaa break jokaisen lohkon jälkeen. Näin ohjelma poistuu switch-lauseesta ja jatkaa suoritustaan.
1. Mitä tulostuu konsoliin?
2. Miksi tarvitsemme break-avainsanaa?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme