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.