Ho il classico menù dove ad ogni numero corrisponde al richiamo di una funzione ma va bene effettuare un controllo in questo modo? Intendo dire la porzione di codice del try-catch interno.
codice:
try {
int opzione;
String tmpString="";
int tmpInt=-1;
boolean test=false;
do{
System.out.println("0. Esci dal menù");
System.out.println("1. Fai questo");
System.out.println("2. Fai quest'altro");
// INIZIO CONTROLLO OPZIONE
do{
System.out.print("\nCosa vuoi fare? ");
tmpString=tastiera.readLine();
try{
tmpInt=Integer.parseInt(tmpString);
test=true;
if(tmpInt<0 || tmpInt>2){
System.out.println("\tATTENZIONE: valore non corretto!");
test=false;
}
}
catch(NumberFormatException e){
System.out.println("\t"+e.getMessage() + " is not a integer");
test=false;
}
}while(!test);
// FINE CONTROLLO OPZIONE
opzione=tmpInt;
if(opzione==1){}
if(opzione==2){}
}while(opzione!=0);
System.out.println("\nFine programma");
}catch(Exception e){
System.out.println("Errore!\n"+e.getMessage());
}
Adesso non guardate il codice per com'è oppure lo switch anziché la serie di if visto che ho tolto una marea di istruzioni.
Ovviamente è molto più utile fare un metodo public int intero(inf,sup), se deve essere imitato tra due numeri (0 e 2 in questo caso), che possa essere richiamato ovunque (lo metterò all'interno di una mia classe functions) ma come faccio a farlo con le eccezioni?
Oppure conviene modificare il setter di quel campo?
Si possono mettere più catch per dire di che errore si tratta?
Oppure è meglio usare opzione=scanner.nextInt()?
Non sto chiedendo il codice, ho solo bisogno di capire il funzionamento corretto. Grazie!