2011-09-15 11 views
3

Scannerクラスを使用して、複数のトークンを一度に入力する方法を解明しようとしています。私は完璧に動作するコードをいくつか見つけました。私はScanner.hasNextメソッドが無期限にブロックできることを知っています。なぜこのコードのkeyboard = new Scanner(keyboard.nextLine());という行がこれをやめないのですか?なぜラインキーボード=新しいスキャナ(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); 

ありがとう!

答えて

5

keyboardは、入力の最初の行からトークンを読み取るScannerになります。

Scanner(String str)コンストラクタを使用すると、結果のスキャナではstrが入力として使用されます。

これは明らかですが、端末IOがラインバッファであることを理解するだけで十分でしょう。これは、の返信を押すまで、スキャナは何も読み取られないことを意味します。

関連する問題