Classes de leitura de classe do Java Scanner [duplicado]

Esta questão já tem uma resposta aqui:

Strings de leitura de classe do Java Scanner 5 respostas

Eu tenho o seguinte 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]);

Quando executo este código, o scanner só pega o primeiro nome e não o sobrenome. E, às vezes, ele pula uma linha ao tentar digitar um nome, ele aparece como se eu tivesse deixado o nome em branco e pule para o próximo nome. Eu não sei o que está causando isso.

Espero que alguém possa me ajudar!

EDIT: eu tentei in.nextLine (); conserta os nomes completos mas ainda mantém uma linha, aqui está um exemplo da saída:

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

questionAnswers(4)

yourAnswerToTheQuestion