Explications différence entre next et nextLine
En fait, la lecture par nextInt ne "consomme pas" la fin de ligne que vous retrouvez ensuite lors de la lecture par nextLine.
D'une manière générale, les "espaces blancs" (espace, fin de ligne...) servent de délimiteur de l'information lue. La plupart des méthodes (next, nextInt...) commencent par consommer les éventuels espaces blancs avant de lire une information.
Mais la méhtode nextLine, quant à elle, lit tous les caractères qu'elle rencontre, même s'il s'agit d'espaces blancs, jusqu'à la rencontre d'une fin de ligne, en consommant cette dernière,
Ceci explique le comportement obtenu.
A noter que l'on peut toujours forcer la consommation de tous les caractères restant sur une ligne par une simple instruction :
in.nextLine() ;
(in étant le Scanner associé au clavier).