Il "problema" è di Scanner ma è ben noto: se usi i next di Scanner che forniscono qualcosa diverso da String (int, altri primitivi ....), se l'input è malformato/errato Scanner lancia InputMismatchException ma il token errato rimane nel suo buffer interno.Originariamente inviato da degliantoni
Se inserisco un dato errato, come una lettera, il ciclo non termina ma continua all'infinito.
Se rifai nextInt .. idem, sei sempre sullo stesso token, stesso errore.
Basta che "butti" via il token errato con un next() .
P.S. ti conviene fattorizzare l'input di un int (con eventuale messaggio di prompt parametrabile) in un metodo apposito, invece di annegarlo nel resto della tua logica.

Rispondi quotando