Cadenas de lectura de clase de Java Scanner [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Cadenas de lectura de clase Java Scanner 5 respuestas

Obtuve el siguiente código:

        int nnames;
    String names[];

    System.out.print("How many names are you going to save: ");
    Scanner in = new Scanner(System.in);
    nnames = in.nextInt();
    names = new String[nnames];

    for (int i = 0; i < names.length; i++){
        System.out.print("Type a name: ");
        names[i] = in.next();
    }

    System.out.println(names[0]);

Cuando ejecuto este código, el escáner solo recogerá el nombre y no el apellido. Y a veces saltará una línea cuando intente ingresar un nombre, aparecerá como si hubiera dejado el nombre en blanco y saltar al siguiente nombre. No sé qué está causando esto.

¡Espero que alguien pueda ayudarme!

EDITAR: He intentado in.nextLine (); arregla los nombres completos pero aún mantiene una línea, aquí hay un ejemplo de la salida:

How many names are you going to save:  3
Type a name: Type a name: John Doe
Type a name: John Lennon

Respuestas a la pregunta(4)

Su respuesta a la pregunta