/* ************************************************************************* * Ora analizzeremo il costrutto switch, che permette di fare facilmente * test multipli ad una variabile. Abbiamo visto come fare dei test * multipli tramite molti if annidati, ma quando i test sono molti, ossia * sono molti i "casi" in cui agiamo diversamente, e' meglio usare switch. * Ecco la sua forma: * * switch(variabile) * { * case costante1: * istruzione1; * break; * case costante2: * istruzione2; * break; * case costante3: * istruzione3; * break; * default: * istruzione4; * } * * In questo caso faremmo 3 confronti. Se la variabile non soddisfa nessuno * dei 3 confronti viene eseguita l'istruzione sotto "default". * I break servono per fermare il confronto qualora uno dei casi fosse * risultato vero. Se non si mettono i break i confronti continuano al case * successivo. Se non si mette la parte default, nel caso in cui nessun * confronto sia vero, non viene fatto niente. * Da notare che lo switch puo' verificare solo l'uguaglianza, a differenza * degli if che possono verificare condizioni qualsiasi. * Potremmo usare lo switch per fare una specie di menu' di selezione, * in cui controlliamo quale voce di menu' (corrispondente ad un numero), * e' stata selezionata. ************************************************************************* */ import java.io.*; // Include le funzioni I/O standard di base. class Jlez1i1 { // Da qua inizia la classe Jlez1i1 public static void main(String args[]) // Definiamo il metodo Main. { // Inizio del main() int pippo=0; // Definiamo una variabile intera pippo. System.out.println("\n Scegli il canto dell'inferno che ti interessa:\n"); System.out.println(" 1) Canto primo."); System.out.println(" 2) Canto secondo."); System.out.println(" 3) Canto terzo."); System.out.println(" 4) Canto quarto."); System.out.println(" 5) Canto quinto."); System.out.println(" 6) Canto sesto."); System.out.println(" 7) Canto settimo."); System.out.println(" 8) Canto ottavo."); System.out.println(" 9) Canto nono."); System.out.println(" 10) Canto decimo."); try { DataInputStream leggilo = new DataInputStream(System.in); String stringa = leggilo.readLine(); // dichiaro e leggo stringa. pippo = Integer.valueOf(stringa).intValue(); // e la converto in int. } catch (Exception e) { System.out.println("Errore: " + e + " nella lettura da tastiera"); System.exit(0); } switch(pippo) // pippo usato per il confronto { case 1: System.out.println("Nel mezzo del cammin di nostra vita"); System.out.println("Mi ritrovai per una selva oscura,"); System.out.println("Che la diritta via era smarrita."); break; case 2: System.out.println("Lo giorno se n'andava, e l'aer bruno"); System.out.println("Toglieva gli animai, che sono in terra."); break; case 3: System.out.println("Per me si va nella citta' dolente,"); System.out.println("Per me si va nell'eterno dolore,"); System.out.println("Per me si va tra la perduta gente."); break; case 4: System.out.println("Ruppemi l'alto sonno nella testa"); System.out.println("Un greve tuono, si ch'io mi riscossi,"); System.out.println("Come persona che per forza e' desta"); break; case 5: System.out.println("Cosi' discesi del cerchio primaio"); System.out.println("Giu' nel secondo, che men loco cinghia,"); System.out.println("E tanto piu' dolor, che pugne a guaio."); break; case 6: System.out.println("Al tornar della mente, che si chiuse"); System.out.println("Dinnanzi alla pieta' de' due cognati"); System.out.println("Che di tristizia tutto mi confuse,"); System.out.println("Nuovi tormenti e nuovi tormentati"); System.out.println("Mi veggo intorno, come c'io mi muova\n"); break; case 7: System.out.println("Pape Satan, pape Satan aleppe,"); System.out.println("Comincio' Pluto colla voce chioccia"); System.out.println("E quel Savio gentil, che tutto seppe"); System.out.println("Disse per confortarmi: Non ti noccia"); System.out.println("La tua paura, che', poter ch'egli abbia,"); System.out.println("Non ti torra' lo scender questa roccia."); break; case 8: System.out.println("Io dico seguitando, ch'assai prima"); System.out.println("Che noi fossimo al pie' dell'alta torre,"); System.out.println("Gli occhi nostri n'andar suso alla cima"); break; case 9: System.out.println("Quel color che vilta' di fuor mi pinse"); System.out.println("Veggendo il Duca mio tornare in volta"); System.out.println("Piu' tosto dentro il suo nuovo ristrinse"); break; case 10: System.out.println("Ora sen va per uno stretto calle"); System.out.println("Tra il muro della terra e li martiri"); System.out.println("Lo mio Maestro, ed io dopo le spalle."); break; default: System.out.println("Selezione sbagliata!"); } // Fine del costrutto switch } // Fine del metodo principale Main() } // Fine della classe Jlez1i1 /* ************************************************************************* * L'unico "difetto" che ha questo programma e' che se si volessero vedere * tutti e 10 gli inizi di canto si dovrebbe eseguire 10 volte. * In pratica, bisognerebbe fare in modo che si ritorni al menu' di * selezione ogni volta fino a che non si voglia uscire dal programma, * magari inserendo 0. Vedremo dei sistemi per fare cio'. ************************************************************************* */