Perchè dopo aver letto il 3 con nextInt() rimane, appunto, l'INVIO all'interno del buffer che non è ancora stato consumato.
Serve un next() / nextLine() per consumare, appunto, l'INVIO.


Ciao.