Jei jūsų „Java“ programai reikia pasirinkti du ar tris veiksmus, an jei, tada dar pareiškimas užteks. Tačiau jei, tada dar pareiškimas pradeda jaustis sudėtingas, kai programai gali prireikti daugybės pasirinkimų. Jų yra tik tiek dar... jei teiginiai, kuriuos norite pridėti, kol kodas neatrodo netvarkingas. Kai reikia priimti sprendimą dėl kelių variantų, naudokitės perjungimo teiginiu.
Perjungimo pareiškimas
Perjungimo teiginys suteikia programai galimybę palyginti išraiška į alternatyvių verčių sąrašą. Pvz., Įsivaizduokite, kad turite išskleidžiamąjį meniu, kuriame yra skaičiai nuo 1 iki 4. Priklausomai nuo to, kuris numeris pasirinktas, norite, kad jūsų programa darytų ką nors kita:
// Tarkime, kad vartotojas pasirenka numerį 4
int menuChoice = 4;
jungiklis (menuChoice)
{
1 atvejis:
JOptionPane.showMessageDialog (nulis, „Jūs pasirinkote numerį 1“);
pertrauka;
2 atvejis:
JOptionPane.showMessageDialog (nulis, „Jūs pasirinkote numerį 2“);
pertrauka;
3 atvejis:
JOptionPane.showMessageDialog (nulis, „Jūs pasirinkote numerį 3“);
pertrauka;
// Ši parinktis pasirenkama, nes 4 vertė sutampa su reikšme
// menuChoise kintamasis
4 atvejis: JOptionPane.showMessageDialog (nulis, „Jūs pasirinkote numerį 4“); pertrauka;
numatytas:
JOptionPane.showMessageDialog (nulis, „Kažkas negerai!“);
pertrauka;
}
Pažvelgę į jungiklio teiginio sintaksę, turėtumėte pastebėti keletą dalykų:
1. Kintamasis, kuriame yra vertė, su kuria reikia palyginti, dedamas viršuje, skliausteliuose.
2. Kiekviena alternatyva prasideda bylos etikete. Vertė, kurią reikia palyginti su viršutine dalimi kintamasis ateina kitas, po jo eina dvitaškis. Pavyzdžiui, 1 atvejis: yra atvejo etiketė, po kurios eina vertė 1 - lygiai taip pat lengvai gali būti 123 atvejis: arba atvejis -9:. Galite turėti tiek alternatyvių variantų, kiek jums reikia.
3. Pažvelgus į aukščiau pateiktą sintaksę, išryškinama ketvirta alternatyvi galimybė - bylos etiketė, jos vykdomas kodas (t. Y., JOptionPane) ir pertraukos teiginys. Pertraukimo signalas nurodo kodo, kurį reikia įvykdyti, pabaigą. Jei pažvelgsite, pamatysite, kad kiekvienas alternatyvus variantas baigiasi pertraukos teiginiu. Labai svarbu nepamiršti įrašyti pertraukos pareiškimą. Apsvarstykite šį kodą:
// Tarkime, kad vartotojas pasirenka numerį 1
int menuChoice = 1;
jungiklis (menuChoice)
1 atvejis:
JOptionPane.showMessageDialog (nulis, „Jūs pasirinkote numerį 1“);
2 atvejis:
JOptionPane.showMessageDialog (nulis, „Jūs pasirinkote numerį 2“);
pertrauka;
3 atvejis:
JOptionPane.showMessageDialog (nulis, „Jūs pasirinkote numerį 3“);
pertrauka;
4 atvejis:
JOptionPane.showMessageDialog (nulis, „Jūs pasirinkote numerį 4“);
pertrauka;
numatytas:
JOptionPane.showMessageDialog (nulis, „Kažkas negerai!“);
pertrauka;
}
Tai, ko tikitės įvykti, yra pamatyti dialogo langas sakydamas: „Jūs pasirinkote numerį 1“, tačiau kadangi nėra pertraukos teiginio, atitinkančio pirmojo atvejo etiketę, antrosios raidės etiketėje esantis kodas taip pat vykdomas. Tai reiškia, kad pasirodys ir kitas dialogo langas, kuriame sakoma: „Jūs pasirinkote numerį 2“.
4. Perjungimo teiginio apačioje yra numatytoji etiketė. Tai panašu į apsauginį tinklą tuo atveju, jei nė viena iš dėklų etikečių reikšmių nesutampa su tuo, kokia yra lyginamoji vertė. Labai naudinga pateikti kodo vykdymo būdą, kai nepasirinkta nė viena iš norimų parinkčių.
Jei visada tikitės, kad bus pasirinkta viena iš kitų parinkčių, tuomet galite palikti numatytąją etiketę, tačiau užrašyti vieną kiekvieno jūsų sukurto jungiklio teiginio pabaigoje yra geras įprotis. Gali atrodyti, kad juo niekada nebus naudojamasi, tačiau klaidos gali įsisprausti į kodą ir tai gali padėti surasti klaidą.
Nuo JDK 7
Vienas iš „Java“ sintaksės pakeitimų išleidus „JDK 7“ yra galimybė naudoti Stygos jungtuvių teiginiuose. Gebėjimas palyginti eilutės reikšmes jungiklio teiginyje gali būti labai naudingas:
Styginio vardas = „Bobas“;
jungiklis (name.toLowerCase ())
{
atvejis "Joe":
JOptionPane.showMessageDialog (nulis, „Labas rytas, Džo!“);
pertrauka;
„michael“ atvejis:
JOptionPane.showMessageDialog (nulis, „Kaip sekasi, Michaelas?“);
pertrauka;
„bob“ atvejis:
JOptionPane.showMessageDialog (nulis, „Bobai, mano senas draugas!“);
pertrauka;
atvejis "billy":
JOptionPane.showMessageDialog (nulis, „Popietė Billy, kaip sekasi vaikams?“);
pertrauka;
numatytas:
JOptionPane.showMessageDialog (nulis, „Malonu su tavimi susitikti, Džonas Doe.“);
pertrauka;
}
Palyginus dvi eilutės reikšmes, gali būti daug lengviau, jei įsitikinsite, kad jos visos yra tuo pačiu atveju. „.ToLowerCase“ metodo naudojimas reiškia, kad visos bylos etiketės vertės gali būti nurodytos mažosios raidės.
Dalykai, kuriuos reikia atsiminti apie jungiklio pareiškimą
• Palyginamo kintamojo tipas turi būti char, baitas, trumpasis, int, simbolis, baitas, trumpasis, sveikasis skaičius, eilutė arba enum tipas.
• Reikšmė šalia korpuso etiketės negali būti kintama. Tai turi būti nuolatinė išraiška (pvz., Vidinis pažodis, char rašmuo).
• Visų raidžių etikečių nuolatinių išraiškų reikšmės turi būti skirtingos. Tai padarytų sudarydami laiko klaidą:
jungiklis (menuChoice)
{
323 atvejis:
JOptionPane.showMessageDialog (nulis, „Jūs pasirinkote 1 variantą“);
pertrauka;
323 atvejis:
JOptionPane.showMessageDialog (nulis, „Jūs pasirinkote 2 variantą“);
pertrauka;
• Perjungimo pareiškime gali būti tik viena numatytoji etiketė.
• Kai naudojate objektą jungiklio teiginiui (pvz., Eilutė, sveikasis skaičius, simbolis) įsitikinkite, kad jis nėra niekinis. Null objektas sukels vykdymo klaidą, kai bus vykdomas jungiklio teiginys.