Ako vaš Java program mora odabrati između dvije ili tri akcije, an ako, pak, drugo izjava bit će dovoljna Međutim ako, pak, drugo Izjava se počinje osjećati nezgrapno kada postoji niz izbora koje bi program trebao trebati donijeti. Samo ih je toliko drugo... ako izjave koje želite dodati prije nego što kôd počne izgledati neuredno. Kada je potrebna odluka za više opcija, upotrijebite izjavu o prebacivanju.
Izjava o prekidaču
Izjava o prekidaču omogućuje programu da uspoređuje vrijednost an izraz na popis alternativnih vrijednosti. Na primjer, zamislite da imate padajući izbornik koji je sadržavao brojeve 1 do 4. Ovisno o tome koji ste broj odabrali, želite da vaš program učini nešto drugačije:
// recimo da korisnik bira broj 4
int menuChoice = 4;
prekidač (izbornikOdabir)
{
1. slučaj:
JOptionPane.showMessageDialog (null, "Izabrali ste broj 1.");
pauza;
slučaj 2:
JOptionPane.showMessageDialog (null, "Izabrali ste broj 2.");
pauza;
3. slučaj:
JOptionPane.showMessageDialog (null, "Izabrali ste broj 3.");
pauza;
// Ova se opcija bira jer vrijednost 4 odgovara vrijednosti
// menuChoise varijabla
slučaj 4: JOptionPane.showMessageDialog (null, "Izabrali ste broj 4."); pauza;
zadano:
JOptionPane.showMessageDialog (null, "nešto je pošlo po zlu!");
pauza;
}
Ako pogledate sintaksu iskaza prebacivača, trebali biste primijetiti nekoliko stvari:
1. Varijabla koja sadrži vrijednost s kojom se mora uspoređivati postavlja se na vrh, unutar zagrada.
2. Svaka alternativna opcija započinje s naljepnicom. Vrijednost koja se uspoređuje s vrhom varijabla slijedi slijedi dvotočka. Na primjer, slučaj 1: je oznaka slučaja praćena vrijednošću 1 - jednako lako može biti i slučaj 123: ili slučaj -9:. Možete imati toliko alternativnih mogućnosti koliko vam treba.
3. Ako pogledate gornju sintaksu, istaknuta je četvrta alternativna opcija - oznaka slova, kôd koji izvršava (tj., JOptionPane) i izjava o prekidu. Izjava o prekidu označava kraj koda koji treba izvršiti. Ako pogledate, vidjet ćete da svaka alternativna opcija završava izjavom o prekidu. Vrlo je važno sjetiti se staviti izjavu o prekidu. Razmislite o sljedećem kodu:
// recimo da korisnik odabere broj 1
int menuChoice = 1;
prekidač (izbornikOdabir)
1. slučaj:
JOptionPane.showMessageDialog (null, "Izabrali ste broj 1.");
slučaj 2:
JOptionPane.showMessageDialog (null, "Izabrali ste broj 2.");
pauza;
3. slučaj:
JOptionPane.showMessageDialog (null, "Izabrali ste broj 3.");
pauza;
slučaj 4:
JOptionPane.showMessageDialog (null, "Izabrali ste broj 4.");
pauza;
zadano:
JOptionPane.showMessageDialog (null, "nešto je pošlo po zlu!");
pauza;
}
Ono što očekujete je da vidite dijaloškom okviru rekavši "Izabrali ste broj 1", ali s obzirom da ne postoji izjava o prekidu koja bi odgovarala prvoj oznaci slučaja, kôd u drugoj oznaci slučaja također se izvršava. To znači da će se pojaviti i sljedeći dijaloški okvir koji kaže "Izabrali ste broj 2".
4. Na dnu iskaza preklopnika nalazi se zadana oznaka. Ovo je poput sigurnosne mreže u slučaju da nijedna vrijednost oznaka slučaja ne odgovara vrijednosti koja se uspoređuje s njom. Vrlo je korisno pružiti način izvršenja koda kada nije odabrana nijedna od željenih opcija.
Ako uvijek očekujete da se odabere jedna od drugih opcija, tada možete izostaviti zadanu oznaku, ali stavljati je na kraj svake izjave o prebacivanju dobra je navika u koju ulaze. Možda se čini malo vjerojatnim da će se ikada koristiti, ali pogreške mogu ući u kôd i mogu vam pomoći uhvatiti pogrešku.
Od JDK 7
Jedna od promjena Java sintakse izdanjem JDK 7 je mogućnost korištenja nizovi u preklopnim izjavama. Sposobnost uspoređivanja nizskih vrijednosti u izvodu prekidača može biti vrlo korisna:
Ime niza = "Bob";
sklopka (name.toLowerCase ())
{
slučaj "joe":
JOptionPane.showMessageDialog (null, "Dobro jutro, Joe!");
pauza;
Futrola "michael":
JOptionPane.showMessageDialog (null, "Kako ide, Michael?");
pauza;
slučaj "bob":
JOptionPane.showMessageDialog (null, "Bob, stari moj prijatelj!");
pauza;
slučaj "billy":
JOptionPane.showMessageDialog (null, "Popodnevni Billy, kako su djeca?");
pauza;
zadano:
JOptionPane.showMessageDialog (null, "Drago mi je što smo se upoznali, John Doe.");
pauza;
}
Usporedite li dvije vrijednosti Stringa, to može biti puno lakše ako se uvjerite da su sve u istom slučaju. Korištenje .toLowerCase metode znači da se sve vrijednosti oznaka s velikim slovima mogu nalaziti malim slovima.
Ne zaboravite o Izjavi o prebacivanju
• Vrsta varijable s kojom se uspoređuje mora biti vrsta char, bajt, kratka, int, znak, bajt, kratka, cjelovita vrijednost, niz ili enum.
• Vrijednost pored oznake slova ne može biti varijabla. Mora biti stalni izraz (npr. Int doslovce, char literal).
• Vrijednosti stalnih izraza na svim oznakama slovima moraju biti različite. Sljedeće bi rezultiralo pogreškom u vremenu prevođenja:
prekidač (izbornikOdabir)
{
slučaj 323:
JOptionPane.showMessageDialog (null, "Izabrali ste opciju 1.");
pauza;
slučaj 323:
JOptionPane.showMessageDialog (null, "Izabrali ste opciju 2.");
pauza;
• U izvodu prekidača može biti samo jedna zadana oznaka.
• Kad koristite objekt za preklopnu izjavu (npr. String, cjelobrojni znak, znak), provjerite je li nula. Nulti objekt će rezultirati pogreškom tokom izvršavanja kada se izvrši prekidač.