PDA

View Full Version : [Java] Problema nell'uso dello switch


Beaviss
20-01-2008, 16:53
Ciao a tutti!
Cercando di utilizzare uno switch incorro in un problema... praticamente ho inserito in un while un System.in.read() prima dello switch per creare una specie di menu di selezione, il problema è che una volta inserito l'input da tastiera, in output il programma esegue l'operazione come da input dopodichè fà un altro ciclo senza richiedere nulla all'utente per poi tornare a chiedere l'input al ciclo successivo ...

vi inserisco il codice:

while( c != 0){
System.out.println("Inserisci un numero per la selezione dell'operazione:");
System.out.println("1 - Dati del curriculum attualmente presente nel database");
System.out.println("2 - Elenco delle borse di studio ricevute");
System.out.println("3 - uscita dal programma\n");
int variabile = (char)System.in.read();
switch (variabile) {
case '1': System.out.println("questo è il curriculum di "+ Stefano.leggiNome()+" nato ad "+ Stefano.leggiLuogoN()+" nell'anno "+Stefano.leggiAnnoN()+"\n");
break;
case '2': BorsaStudio[] elenco = Stefano.leggielencoBorse();
for(int i=0;i < elenco.length; i++) {
System.out.println(elenco[i].descr());}
break;
case '3': c = 0;
break;
}
}

in outup ho questo:
Inserisci un numero per la selezione dell'operazione:
1 - Dati del curriculum attualmente presente nel database
2 - Elenco delle borse di studio ricevute
3 - uscita dal programma

1
questo è il curriculum di Stefano nato ad Ascoli Piceno nell'anno 1987

Inserisci un numero per la selezione dell'operazione:
1 - Dati del curriculum attualmente presente nel database
2 - Elenco delle borse di studio ricevute
3 - uscita dal programma

Inserisci un numero per la selezione dell'operazione:
1 - Dati del curriculum attualmente presente nel database
2 - Elenco delle borse di studio ricevute
3 - uscita dal programma

1
questo è il curriculum di Stefano nato ad Ascoli Piceno nell'anno 1987


Grazie epr l'eventuale aiuto... sono alle prime armi :)

FedeX_65246X
21-01-2008, 11:17
int variabile = (char)System.in.read();

Questa istruzione legge un byte alla volta; supponendo
che l'utente prema 1 + INVIO, avrai nel buffer

{'1', <CR> ,<LF>}

quindi tre byte.

La prima iterazione del while legge '1', la seconda leggera' <CF> e la terza <LF>.