Jäsenrekisteriohjelmamme päävalinta olisi näppärintä toteuttaa switch - lauseella:
/**
* Silmukka jossa odotetaan näppäint ja suoritetaan vastaava toiminto.
* 0:n painaminen lopettaa silmukan ja palaa kutsuvaan ohjelmaan.
* @return palauttaa 0 jos kaikki meni hyvin, 1 jos tuli virhe
*/
public int paavalinta() {
char nappain;
while ( true ) {
paamenu();
nappain = IO.odota_nappain("?012345",IO.EI_OLETUSTA,IO.MERKKI_ISOKSI);
switch (nappain) {
case '?': avustus(nappain); break;
case '0': return 0;
case '1': lisaa_uusi_jasen(nappain); break;
case '2': etsi_jasenen_tiedot(nappain); break;
case '3': tulosteet(nappain); break;
case '4': tietojen_korjailu(nappain); break;
case '5': paivita_jasenmaksuja(nappain); break;
default : tulosta("Näin ei voi käydä!"); return 1;
}
}
}
switch - lauseessa case osien lopuksi break on yleensä välttämätön. break estää suorittamasta seuraavia rivejä.
Joskus harvoin breakin puuttumista voidaan käyttää hyväksi, mutta tällöin pitää olla todella tarkkana:
public static int swicth_testi(int x,int operaatio) {
switch (operaatio) {
case 5: /* Operaatio 5 tekee saman kuin 4 */
case 4: x *= 2; break; /* 4 laskee x=2*x */
case 3: x += 2; /* 3 laskee x=x+4 */
case 2: x++; /* 2 laskee x=x+2 */
case 1: x++; break; /* 1 laskee x=x+1 */
default: x=0; break; /* Muut nollaavat x:än */
}
return x;
}
Lause default suoritetaan jos mikään case- osista ei ole täsmännyt (tai tietysti jos jokin break puuttuu). default- lauseen ei tarvitse olla viimeisenä, mutta tällöin vaaditaan taitavaa breakin käyttöä, siis paras pitää default viimeisenä!
Yleistä switch- lausetta ei voi korvata joukolla if- lauseita käyttämättä goto- lausetta. Mikäli kuitenkin jokaisen case rakenteen perässä on break, voidaan switch- korvata sisäkkäisillä if- else - rakenteilla.