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!