Se uno dei nextXyz() di Scanner lancia InputMismatchException, vuol dire che il token non è nel formato che il metodo si aspetta (e quindi non può convertire il token nel tipo da restituire, es. int, double, BigInteger).Originariamente inviato da shika92
Quindi, per avere chiare le idee, l'input rimane memorizzato finché non elimino il token con next()?
Ma questo token errato resta disponibile per Scanner (non viene rimosso) e quindi un ciclo inappropriato farebbe rifallire continuamente quel metodo.
È compito del programmatore invocare qualcosa per rimuoverlo, ad esempio next() che tratta un qualunque token arbitrario. Poi che il token lo "butti" via (non lo usi) oppure ad esempio lo usi per dire all'utente: "Errore, hai scritto '.....' !" o per altro, beh, è assolutamente una tua scelta.