JAVA SĄLYGOS
Java switch instrukcija
switch parenka vieną iš kelių kodo blokų pagal vienos išraiškos reikšmę. Kai tikrinama daug aiškių variantų, ši konstrukcija gali būti lengviau skaitoma nei ilga if...else if grandinė.
Kaip veikia switch?
switchišraiška apskaičiuojama vieną kartą.- Gauta reikšmė iš eilės palyginama su
casereikšmėmis. - Radus atitikmenį pradedamas vykdyti atitinkamas kodo blokas.
breakužbaigia visąswitchinstrukciją.- Jei atitikmens nėra, vykdomas pasirinktinis
defaultblokas.
switch sintaksė
switch (išraiška) {
case reikšmė1:
// Vykdomas pirmasis kodo blokas
break;
case reikšmė2:
// Vykdomas antrasis kodo blokas
break;
default:
// Vykdoma, kai neatitinka nė viena reikšmė
} Kiekviena case reikšmė turi būti suderinama su switch išraiškos tipu ir negali dubliuotis tame pačiame bloke.
Būsenos kodo pavyzdys
Programa gali pasirinkti pranešimą pagal užduoties būsenos kodą:
int busenosKodas = 2;
switch (busenosKodas) {
case 1:
System.out.println("Užduotis paruošta");
break;
case 2:
System.out.println("Užduotis vykdoma");
break;
case 3:
System.out.println("Užduotis baigta");
break;
default:
System.out.println("Nežinoma būsena");
}
// Išveda: Užduotis vykdoma Išraiškos reikšmė yra 2, todėl vykdomas antrasis case. Pasiekus break, programa išeina iš switch ir kitų variantų nebevykdo.
break raktažodis
break sustabdo switch, kai pasirinktos šakos darbas baigtas. Be jo vykdymas tęstųsi kitame case bloke net netikrinant to bloko reikšmės. Toks elgesys vadinamas perėjimu (angl. fall-through).
Jį praleisk tik tada, kai sąmoningai nori kelioms reikšmėms pritaikyti tą patį veiksmą.
default raktažodis
default apdoroja visas reikšmes, kurioms nėra atskiro case:
String role = "svečias";
switch (role) {
case "administratorius":
System.out.println("Visos teisės");
break;
case "narys":
System.out.println("Nario teisės");
break;
default:
System.out.println("Tik peržiūros teisės");
}
// Išveda: Tik peržiūros teisės Reikšmė „svečias“ neatitinka nė vieno case, todėl suteikiamos tik peržiūros teisės. Kai default yra paskutinis blokas, po jo break nebūtinas.
Keli case su tuo pačiu veiksmu
Kelias reikšmes galima sugrupuoti paliekant tarp jų perėjimą ir bendrą kodą parašant paskutinėje šakoje:
char kategorija = 'B';
switch (kategorija) {
case 'A':
case 'B':
System.out.println("Prioritetinė kategorija");
break;
case 'C':
System.out.println("Standartinė kategorija");
break;
default:
System.out.println("Kategorija neatpažinta");
}Tiek 'A', tiek 'B' pasiekia tą patį pranešimą, o bendras break užbaigia instrukciją.
switch ar else if?
switch patogus, kai viena išraiška lyginama su konkrečiomis reikšmėmis. Intervalams, sudėtingiems palyginimams arba kelioms skirtingoms loginėms išraiškoms dažniausiai aiškesnė if...else if grandinė.

