为什么线键盘=新的Scanner(keyboard.nextLine()); 让程序不挂?

lam*_*442 3 java

我一直试图弄清楚如何使用Scanner该类一次输入多个令牌.我找到了一些完美的代码.我知道该Scanner.hasNext方法可以无限期地阻止.为什么keyboard = new Scanner(keyboard.nextLine());此代码中的行阻止它执行此操作?

    Scanner keyboard = new Scanner(System.in);
    LinkedList<String> ll = new LinkedList<String>();

    System.out.println("Please enter your full name: ");
    keyboard = new Scanner(keyboard.nextLine());

    while(keyboard.hasNext())
    {
        System.out.println("tag ");
        ll.add(keyboard.next());

    }

    System.out.println(ll);
Run Code Online (Sandbox Code Playgroud)

谢谢!

aio*_*obe 5

keyboard将是Scanner从第一行输入读取令牌的.

使用Scanner(String str)构造函数时,生成的扫描程序将str用作输入.

如果您明白这一点,您可能只需要了解终端IO是行缓冲的.这意味着在按下之前扫描仪将无法读取return.