Java Scanner类读取字符串

mar*_*les 4 java string class duplicates java.util.scanner

我得到以下代码:

        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]);
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,扫描程序将只选取名字而不是姓氏.在尝试输入名称时有时会跳过一行,它会显示为我将名称留空并跳到下一个名称.我不知道是什么造成了这种情况.

我希望有一个人可以帮助我!

编辑:我试过in.nextLine(); 它修复了完整的名称,但它仍然保持一行,这是输出的一个例子:

How many names are you going to save:  3
Type a name: Type a name: John Doe
Type a name: John Lennon
Run Code Online (Sandbox Code Playgroud)

rog*_*pvl 8

代替:

in.next();
Run Code Online (Sandbox Code Playgroud)

使用:

in.nextLine();
Run Code Online (Sandbox Code Playgroud)

nextLine() 读取字符,直到找到新的行字符 '\n'