Łańcuchy odczytu klasy Java Scanner [duplikat]

To pytanie ma już tutaj odpowiedź:

Łańcuchy odczytu klasy Java Scanner 5 odpowiedzi

Mam następujący kod:

        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]);

Kiedy uruchomię ten kod, skaner odbierze tylko imię, a nie nazwisko. Czasami pomija linię, gdy próbuje wprowadzić nazwę, pojawi się tak, jakbym pozostawił puste imię i przeskoczył do następnej nazwy. Nie wiem, co to powoduje.

Mam nadzieję, że ktoś może mi pomóc!

EDYCJA: Próbowałem in.nextLine (); naprawia pełne nazwy, ale nadal zachowuje linię, oto przykład wyjścia:

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