|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 1279
|
[java] menu testuale a scelta numerica,come nn far inserire lettere?
ciao a tutti,
avendo un menu testuale su terminale, di questo tipo: SCEGLI OPERAZIONE: 1) bho 2) ciao 3) nnso 4)ESCI l'utente deve scegliere 1-2-3 o 4.. se immetto un qualcods diversa da una cifra lancia questa eccezione... Exception in thread "main" java.util.InputMismatchException come posso risolvere con un blocco try-catch? oppure con cosa? il menu è dentro un while-switch, quindi se inserisco qualsiasi numero fuori da 1-4, non da errore e riscrive il menu di nuovo in attesa di una scelta giusta...
__________________
ho concluso affari con i seguenti forum: aessenet, amd planet, hwtweackers, hwupgrade. in questo forum con: cicos, hungwavy se si scrive così, jcd,JeanCaneo, solertes, remok, Krosis,giorgio156c,-rambo-, gertuzz,dOkTOR_dO,Leland Gaunt,f.loiacono, ercagno |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
Posta il codice se possibile.
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 1279
|
Codice:
public static void main (String args[]) throws IOException,FileNotFoundException{
Scanner in=new Scanner(System.in);
boolean quit = false;
while(!quit){
out.println("\n1) Prenotazione");
out.println("2) Gestione (riservato ai docenti");
out.println("3) Esci");
int scelta=in.nextInt();
in.nextLine();
switch(scelta){
case 1:
*****
break;
case 2:
*****
break;
case 3: break;
}
if(scelta==3) quit=true;
}
out.println("Uscita dal sistema eseguita");
}
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2782
|
Io la gestirei così:
Codice:
int scelta;
try{
scelta=in.nextInt();
}catch(InputMismatchException e){
scelta=4;
}
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Aug 2007
Città: Viterbo
Messaggi: 2559
|
Oppure una cosa così:
Codice:
boolean corretto=false;
int scelta;
while(!corretto){
try{
corretto=true;
scelta=in.nextInt();
}catch(InputMismatchException e){
corretto=false;
}
}
__________________
Coolermaster Centurion 590 - Asus M4A78PRO - Phenom II 720 - HIS 6950 IceQ X Turbo 2GB - 2x2 Gb Corsair XMMS2 - Crucial MX300 500gb - HD WD 500gb - Asus VW246H - Windows 7 Pro 64bit
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 1279
|
mmm grazie ragazzi.. provo i codici e vi dirò...
ho un'altra domanda... :P nel sotto menu di GESTIONE ho: INSERISCI CHIUDI ESPORTA... scegliendo una di queste 3 scelte, ho un elenco di esami su cui operare.. ad esempio: 1)programmazione 2)fisica 3)algoritmi ecc... se inserisco un numero fuori da quell'intervallo mi crasha il programma con l'eccezione: IndexOfBoundException.. l'elenco esami è salvato in un arraylist.. Codice:
public boolean inserisciEsame(int scelta,String data,int maxIscr){
Insegnamento ins=scelte.get(scelta-1);
Esame es=new Esame(ins.getNome(),data,ins.getDocente(),maxIscr);
if(esami.addEsame(es)){
es.setInsg(ins);
return true;
}
return false;
}
__________________
ho concluso affari con i seguenti forum: aessenet, amd planet, hwtweackers, hwupgrade. in questo forum con: cicos, hungwavy se si scrive così, jcd,JeanCaneo, solertes, remok, Krosis,giorgio156c,-rambo-, gertuzz,dOkTOR_dO,Leland Gaunt,f.loiacono, ercagno Ultima modifica di marius84 : 29-05-2009 alle 20:17. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Aug 2007
Città: Viterbo
Messaggi: 2559
|
In generale quando hai a che fare con input dell'utente che possa produrre errori puoi fare o con una try-catch inserita in un while, così che finchè non viene prodotto un input corretto "catcha" l'errore, oppure più semplicemente metti un while all'inizio, poi quando hai l'input corretto prosegui nel programma.
Per esempio, immaginando di dover prendere un indice per l'array a che sia corretto: Codice:
int[] a=...
while(true){
int input=sistema per ottenere l'input
if(input>=0 && input<a.length;){
break;
}
}
utilizzi l'input nel programma, sicuro che ha un valore corretto
__________________
Coolermaster Centurion 590 - Asus M4A78PRO - Phenom II 720 - HIS 6950 IceQ X Turbo 2GB - 2x2 Gb Corsair XMMS2 - Crucial MX300 500gb - HD WD 500gb - Asus VW246H - Windows 7 Pro 64bit
|
|
|
|
|
|
#8 | ||
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 1279
|
Quote:
Quote:
però se inserisco una lettera,il cursore va a capo ed inserendo altre lettere o numeri non va niente, li richiede all'infinito.. così catcha l'errore ma va in loop e mi stampa sempre il menu "prenota-gestione-esci"
__________________
ho concluso affari con i seguenti forum: aessenet, amd planet, hwtweackers, hwupgrade. in questo forum con: cicos, hungwavy se si scrive così, jcd,JeanCaneo, solertes, remok, Krosis,giorgio156c,-rambo-, gertuzz,dOkTOR_dO,Leland Gaunt,f.loiacono, ercagno Ultima modifica di marius84 : 01-06-2009 alle 12:02. |
||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:10.




















