2017-11-18 8 views
1
public class Test1 { 
    public static void main(String[] args) { 
     Scanner sc = new Scanner(System.in); 

     while(sc.hasNext()) { 
      System.out.println("First name: "); 
      String fname =sc.next(); 
      System.out.print("Last name: "); 
      Lname = sc.next(); 

     } 


} 

私はちょうどJavaの初心者です。誰かが私を助けてくれることを願っています。私が最後に使った印刷行を無視して、正確に何ができるのか分かりました。 whileループなしでコードの正しい出力が得られますが、一度追加すると(sc.hasnext)
スキャナはファーストネームの前に来て、ファーストネームの入力に使用したスキャナを無視します。 hasNext()スキャナをスキップしますか? Scanner.hasNext()のドキュメントからwhile(sc.hasNext)loop java

+0

は、あなたが使用したい場合は原因私は、コードの一部を削除した個人的な理由のために... –

答えて

3

:このスキャナが入力内の別のトークンを持っている場合

trueを返します。このメソッドは、入力をスキャンするのを待つ間にブロックされることがあります。スキャナは入力を超えて進まない。

これは、追加するwhileループは、何かを書くまで待つことを意味します。あなたが何かを書いた後、それはファーストネームのために読み込まれ、それは続けられます。すべてのデータを書き込むと、何かを書き込むためにもう一度待機し、基本的には常にループします。

ループには別の条件が必要です。たとえば、最後のデータが書き込まれている間にdoを使用することができます。ユーザーが何か他のものを追加したいかどうかの追加の質問をすることができます。例:

do { 
    // gather data 
    System.out.println("Continue ?"); 
    String c = scanner.next(); 
} while("yes".equals(c)) 
+1

'文字列C 'は、ループの前に宣言する必要があります...あなたは私の問題に答え人のため洙多くの感謝それはループ状態にある。 – Pshemo

+0

@vbuhlevアイデアがありがとう –