come faccio un controllo su un input che si aspetta solo interi??
in pratica vorrei far comparire un messaggio di errore se viene immesso qualsiasi carattere Stringa o char.
come faccio un controllo su un input che si aspetta solo interi??
in pratica vorrei far comparire un messaggio di errore se viene immesso qualsiasi carattere Stringa o char.
Leggi il dato come fosse una stringa poi utilizzi Integer.parseInt(stringaLetta).
Se non e' un intero ti solleva un'eccezione.
Allora, parseInt di Integer lancia un'eccezione se non riesce a parsare un valore che sia un intero (da una stringa), potresti sfruttare questa situazione per avvertire dell'errore di immissione e richiedere una nuova immissione.
codice:BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); int numero; boolean flag = false; System.out.print("Immetti intero: "); while (!flag) { try { Integer integer = Integer.parseInt(in.readLine()); numero = integer.intValue(); flag = true; } catch (Exception e) { System.out.print("Dato non valido\nImmetti intero: "); flag = false; } }
<´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
"The answer to your question is: welcome to tomorrow"
EccoOriginariamente inviato da simo7784
Leggi il dato come fosse una stringa poi utilizzi Integer.parseInt(stringaLetta).
Se non e' un intero ti solleva un'eccezione.![]()
<´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
"The answer to your question is: welcome to tomorrow"
grazie ragazzi,ho trovato questa soluzione ma dato che mi lanciava l'eccezione dalla classe del metodo parseInt ho utilizzato nel catch il tipo di eccezione che mi lanciava -NumberFormatExCeption- o qualcosa di simile..codice:catch (Exception e)
il tipo di eccezzione -Exception- è quella che comprende tutti i tipi di eccezioni che il compilatore potrebbe lanciare giusto??in pratica è il livello più alto?![]()
Si, e' il livello piu' alto catturabile dal try catch. Tutte le eccezioni, controllate e non, discendono da questa classe.
A titolo puramente didattico aggiungerei che in molti scenari sarebbe opportuno il tipo esatto di eccezione e gestirlo caso per caso. Ti sarai accorto sbirciando nelle API che metodi e costruttori possono talvolta lanciare eccezioni di natura diversa (2, 3 o più per metodo/costruttore), che chiaramente si verificano in condizioni anomale diverse. Per esempio una connessione a database potrebbe fallire perché non si riesce a stabilire la connessione con il database, oppure perché il driver non è corretto o perché non si riesce a seleziona il database una volta connessi al database-server ecc. ecc... ed in ognuna di queste diverse situazioni potresti voler lanciare messaggi diversi o intraprendere azioni diverse.
<´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
"The answer to your question is: welcome to tomorrow"