|
Kapcsoló (switch-case-default)
|
bet | 46/51 | Sana | 07.04.2017 | Hajmi | 1.08 Mb. | | #3295 |
3.6.3.3. Kapcsoló (switch-case-default)
Ha primitív típus meghatározott értéke alapján szeretnénk különféle dolgokat végezni, akkor egy hosszabb if-else-if szerkezet helyett használjuk inkább a switch utasítást:
view plaincopy to clipboardprint?
-
int pénz = 300;
-
int sörÁra = 120;
-
int sörökSzáma = pénz / sörÁra;
-
switch (sörökSzáma)
-
{
-
case 0:
-
System.out.println("Nincs sör, nincs mit inni.");
-
break;
-
case 1:
-
System.out.println("Egy sör nem sör.");
-
break;
-
case 2:
-
System.out.println("Két sör fél egészség.");
-
break;
-
case 3:
-
System.out.println("Három sör jó kezdés.");
-
break;
-
case 4:
-
System.out.println("Négy sör jó, két sör rossz.");
-
break;
-
default:
-
System.out.println("Sok sör soha nem árt.");
-
}
Ahogy a példában látjuk, döntés a sörökSzáma változó értékétől függ, ha a változó értéke megegyezik valamelyik case ág értékével, akkor az az ág végrehajtásra kerül. A várt működés szerint a program az alábbit írja ki:
view plaincopy to clipboardprint?
-
Két sör fél egészség.
Ha egyik ág se hajtódna végre, akkor a default ágra kerül a vezérlés, ha nincs default ág, akkor a program végrehajtása a switchutasítás végétől folytatódik. A switch működési sajátossága, hogy az első egyezőségtől kezdve az összes utasítást végrehajtja a blokk végéig, ezért minden ágat egy break utasítás zár, amely hatására a program végrehajtása a switch utasítás után folytatódik. Gyakori programozói hiba a break elhagyása, amely okán másképp működik a programunk, próbáljuk ki a fenti programot brake utasítások nélkül:
view plaincopy to clipboardprint?
-
Két sör fél egészség.
-
Három sör jó kezdés.
-
Négy sör jó, két sör rossz.
-
Sok sör soha nem árt.
Mivel két sörre volt pénzünk, a két sört tartalmazó ágtól kezdve az összes utasítás végrehajtódik.
|
| |