Quote Originariamente inviata da Gas75 Visualizza il messaggio
ma stranamente il nextLine() per acquisire una String è ignorato (cioè l'esecuzione passa oltre), e la String alla fine è stampata vuota.
Si tratta della "solita", conosciutissima e noiosissima questione del "mix" di nextString() (fatto dopo) con uno degli altri nextXyz() (es. nextInt, nextLong, ecc...).

La questione è che se ad un nextInt() si scrive 123<invio> il nextInt() "consuma" solo il token 123 ma il <invio> resta da consumare. E uno "sfortunato" nextString() successivo si trova praticamente un newline di botto cioè riga "vuota".
Non è un "baco" o errore di Scanner ... semplicemente quello è il suo funzionamento per design.

Quote Originariamente inviata da Gas75 Visualizza il messaggio
la soluzione proposta è quella di acquisire tutto come String e successivamente convertirle con i parse delle classi wrapper.
Soluzione giusta e valida, specialmente se si vuole fare un piccolo strato di astrazione "sopra" Scanner, facendosi dei metodi che nascondono questi dettagli.

Quote Originariamente inviata da Gas75 Visualizza il messaggio
Altre vie?
Sì, dopo il nextInt() basta fare sullo scanner un skip("\\s+") che "salta" uno o più whitespace (newline compreso).