Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Switch-Case-Lause | Perustietotyypit ja Operaatiot
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Java Perusteet

bookSwitch-Case-Lause

Useiden erilaisten ehtojen käsittely

Kun tarkistettavia ehtoja on paljon, useiden if-else ketjujen käyttäminen ei ole kätevää.

Esimerkiksi:

Main.java

Main.java

copy
12345678910111213141516171819
package 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ä selkeältä eikä ammattimaiselta. Tällaisissa tapauksissa Java tarjoaa switch-case-lauseen.

switch-case-lause

switch-case-lause koostuu useista osista:

Main.java

Main.java

copy
123456789
switch (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. Tukeudumme 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.

Voimme käyttää tässä myös ehtoa. Tällöin lausekelohkoon tulee kirjoittaa 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 switch-case-rakenteen suorittamisen lopettamiseen ja sen rungosta poistumiseen. Tätä sanaa käytetään usein myös silmukoissa, joista keskustellaan seuraavissa luvuissa. Käytä tätä avainsanaa, kun haluat poistua koodilohkosta ja lopettaa sen suorittamisen.

Parannetaan nyt aiemmin kirjoittamaamme koodia käyttämällä switch-case-lausetta:

Main.java

Main.java

copy
123456789101112131415161718192021222324
package 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ämpää ja helpommin luettavaa sekä laajennettavaa. Meidän ei tarvitse kirjoittaa uutta if-lausetta alusta asti, jos haluamme lisätä uusia ehtoja. Sen sijaan voimme lisätä uuden case-lohkon switch-case statement-lauseeseen.

Tarkastellaan switch-case-lohkon rakennetta:

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-lohkoon tai emme käytä break-avainsanaa.

Tarkastellaan toista esimerkkiä ilman break-avainsanoja:

Main.java

Main.java

copy
1234567891011121314151617181920
package 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 odotuksistamme. Lisäksi saimme tietoa lohkoista case 10 ja default. Juuri tästä syystä 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 avainsanaa break?

question mark

Mitä tulostuu konsoliin?

Select the correct answer

question mark

Miksi tarvitsemme avainsanaa break?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 6

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Suggested prompts:

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?

bookSwitch-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 ole kätevää.

Esimerkiksi:

Main.java

Main.java

copy
12345678910111213141516171819
package 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ä selkeältä eikä ammattimaiselta. Tällaisissa tapauksissa Java tarjoaa switch-case-lauseen.

switch-case-lause

switch-case-lause koostuu useista osista:

Main.java

Main.java

copy
123456789
switch (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. Tukeudumme 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.

Voimme käyttää tässä myös ehtoa. Tällöin lausekelohkoon tulee kirjoittaa 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 switch-case-rakenteen suorittamisen lopettamiseen ja sen rungosta poistumiseen. Tätä sanaa käytetään usein myös silmukoissa, joista keskustellaan seuraavissa luvuissa. Käytä tätä avainsanaa, kun haluat poistua koodilohkosta ja lopettaa sen suorittamisen.

Parannetaan nyt aiemmin kirjoittamaamme koodia käyttämällä switch-case-lausetta:

Main.java

Main.java

copy
123456789101112131415161718192021222324
package 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ämpää ja helpommin luettavaa sekä laajennettavaa. Meidän ei tarvitse kirjoittaa uutta if-lausetta alusta asti, jos haluamme lisätä uusia ehtoja. Sen sijaan voimme lisätä uuden case-lohkon switch-case statement-lauseeseen.

Tarkastellaan switch-case-lohkon rakennetta:

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-lohkoon tai emme käytä break-avainsanaa.

Tarkastellaan toista esimerkkiä ilman break-avainsanoja:

Main.java

Main.java

copy
1234567891011121314151617181920
package 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 odotuksistamme. Lisäksi saimme tietoa lohkoista case 10 ja default. Juuri tästä syystä 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 avainsanaa break?

question mark

Mitä tulostuu konsoliin?

Select the correct answer

question mark

Miksi tarvitsemme avainsanaa break?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 6
some-alt