Jos Java-ohjelman täytyy valita kahden tai kolmen toiminnon välillä, an jos sitten, niin muualla selvitys riittää. Kuitenkin jos sitten, niin muualla lausunto alkaa tuntua hankalalta, kun ohjelmassa on oltava useita valintoja. Niitä on vain niin paljon muuten jos lauseet, jotka haluat lisätä, ennen kuin koodi alkaa näyttää turmeltumattomalta. Kun vaaditaan päätös useista vaihtoehdoista, käytä vaihtovälitystä.
Vaihtolauseke
Vaihtolause antaa ohjelmalle mahdollisuuden vertailla arvoa ilmaisu luetteloon vaihtoehtoisista arvoista. Kuvittele esimerkiksi, että sinulla oli avattava valikko, joka sisälsi numerot 1-4. Valitusta numerosta riippuen haluat ohjelman tekevän jotain erilaista:
// Oletetaan, että käyttäjä valitsee numeron 4
int menuChoice = 4;
kytkin (menuChoice)
{
tapaus 1:
JOptionPane.showMessageDialog (nolla, "Valitsit numeron 1.");
tauko;
tapaus 2:
JOptionPane.showMessageDialog (nolla, "Valitsit numeron 2.");
tauko;
tapaus 3:
JOptionPane.showMessageDialog (nolla, "Valitsit numeron 3.");
tauko;
// Tämä vaihtoehto valitaan, koska arvo 4 vastaa arvoa
// menuChoise-muuttuja
tapaus 4: JOptionPane.showMessageDialog (nolla, "Valitsit numeron 4."); tauko;
oletus:
JOptionPane.showMessageDialog (nolla, "Joku meni pieleen!");
tauko;
}
Jos tarkastelet kytkinlausekkeen syntaksia, sinun tulisi huomata muutama asia:
1. Muuttuja, joka sisältää arvon, johon on tarpeen verrata, sijoitetaan yläosaan, sulujen sisään.
2. Jokainen vaihtoehto alkaa tapausetiketillä. Arvo, jota verrataan yläosaan muuttuja tulee seuraavaksi, jota seuraa kaksoispiste. Esimerkiksi tapaus 1: on tapaustarra, jota seuraa arvo 1 - se voi olla yhtä helposti tapaus 123: tai tapaus -9:. Sinulla voi olla niin monta vaihtoehtoista vaihtoehtoa kuin tarvitset.
3. Jos tarkastelet yllä olevaa syntaksia, neljäs vaihtoehto on korostettu - tapausetiketti, sen suorittama koodi (ts. JOptionPane) ja tauonlausunto. Taukolausunto ilmaisee suoritettavan koodin lopun. Jos katsot, huomaat, että jokainen vaihtoehto loppuu tauonilmaisulla. On erittäin tärkeää muistaa sisällyttää taukolausunto. Harkitse seuraavaa koodia:
// Oletetaan, että käyttäjä valitsee numeron 1
int menuChoice = 1;
kytkin (menuChoice)
tapaus 1:
JOptionPane.showMessageDialog (nolla, "Valitsit numeron 1.");
tapaus 2:
JOptionPane.showMessageDialog (nolla, "Valitsit numeron 2.");
tauko;
tapaus 3:
JOptionPane.showMessageDialog (nolla, "Valitsit numeron 3.");
tauko;
tapaus 4:
JOptionPane.showMessageDialog (nolla, "Valitsit numeron 4.");
tauko;
oletus:
JOptionPane.showMessageDialog (nolla, "Joku meni pieleen!");
tauko;
}
Mitä odotat tapahtuvan, on nähdä a valintaikkuna sanomalla "Valitsit numeron 1", mutta koska ensimmäisen tapauksen etikettiä vastaavaa katkaisulauseketta ei ole, myös toisen tapauksen tunnisteen koodi suoritetaan. Tämä tarkoittaa, että seuraava valintaikkuna, jossa lukee "Valitsit numeron 2", tulee myös näkyviin.
4. Vaihtolauseen alaosassa on oletusetiketti. Tämä on kuin turvaverkko, jos yksikään kotelotarrojen arvoista ei vastaa siihen verrattavaa arvoa. On erittäin hyödyllistä tarjota tapa suorittaa koodi, kun yhtäkään halutusta vaihtoehdosta ei ole valittu.
Jos odotat aina, että jokin muista vaihtoehdoista valitaan, voit jättää oletusetiketin pois, mutta jokaisen luomasi vaihtolausekkeen loppuun sijoittaminen on hyvä tapa päästä siihen. Vaikuttaa epätodennäköiseltä, että sitä käytetään koskaan, mutta virheet voivat hiipiä koodiin ja auttaa virheen löytämisessä.
JDK 7: stä lähtien
Yksi Java-syntaksin muutoksista JDK 7: n julkaisun yhteydessä on kyky käyttää jouset vaihtolausekkeissa. Jos pystyt vertaamaan merkkijonoarvoja kytkinlausekkeessa, voi olla erittäin kätevää:
Merkkijonon nimi = "Bob";
kytkin (nimi.toLowerCase ())
{
tapaus "joe":
JOptionPane.showMessageDialog (nolla, "Huomenta, Joe!");
tauko;
tapaus "michael":
JOptionPane.showMessageDialog (nolla, "Kuinka menee, Michael?");
tauko;
tapaus "bob":
JOptionPane.showMessageDialog (nolla, "Bob, vanha ystäväni!");
tauko;
tapaus "billy":
JOptionPane.showMessageDialog (nolla, "Iltapäivä Billy, kuinka lapset ovat?");
tauko;
oletus:
JOptionPane.showMessageDialog (nolla, "Hyvä tavata sinut, John Doe.");
tauko;
}
Kun verrataan kahta merkkijonoarvoa, se voi olla paljon helpompaa, jos varmistat, että ne ovat kaikki samassa tapauksessa. .ToLowerCase-menetelmän käyttö tarkoittaa, että kaikki tapausmerkkiarvot voivat olla sisällä pieniä.
Muistettavat kytkinlausekkeesta
• Vertailtavan muuttujan tyypin on oltava char, tavu, lyhyt, int, merkki, tavu, lyhyt, kokonaisluku, merkkijono tai enum-tyyppi.
• Kotelotarran vieressä oleva arvo ei voi olla muuttuja. Sen on oltava vakiolauseke (esim. Int kirjaimellinen, char kirjaimellinen).
• Kaikkien tapausmerkkien vakiolausekkeiden arvojen on oltava erilaisia. Seuraava johtaisi käännösajan virheeseen:
kytkin (menuChoice)
{
tapaus 323:
JOptionPane.showMessageDialog (nolla, "Valitsit vaihtoehdon 1.");
tauko;
tapaus 323:
JOptionPane.showMessageDialog (nolla, "Valitsit vaihtoehdon 2.");
tauko;
• Vaihtamiskäskyssä voi olla vain yksi oletusetiketti.
• Kun käytät objektia kytkinlausekkeeseen (esimerkiksi merkkijono, kokonaisluku, merkki), varmista, että se ei ole tyhjä. Null-objekti johtaa ajonaikaiseen virheeseen, kun kytkinlauseke suoritetaan.