2013-08-16 19 views
12

Javaを使用してプログラミングしています。
コンソールベースのプログラムで、ユーザーがEnterキーを押したかどうかを認識できる書き込みコードを試しています。スキャナ入力キーを使用したJava

どのように私はこれをjavaを使用して行うことができます。私はこれがScannerか、バッファされた入力リーダーのどちらかを使って行うことができると言われています。私はバッファリングされた入力リーダーを理解していない(または使用方法を知っている)。

私はこの使用してスキャナーを行う実行しようとしましたが、二回のプログラムを入力して押した後に終了し、それが

Scanner readinput = new Scanner(System.in); 

    String enterkey = "Hola"; 
    System.out.print(enterkey); 


    enterkey = readinput.nextLine(); 
    System.out.print(enterkey); 

    if(enterkey == ""){ 

     System.out.println("It works!"); 

おかげ

動作しません - 編集 - 次のコードは、使用して作品を代わりに==

Scanner readinput = new Scanner(System.in); 

    String enterkey = "Hola"; 
    System.out.print(enterkey); 


    enterkey = readinput.nextLine(); 
    System.out.print(enterkey); 

    if(enterkey.equals("")){ 

     System.out.println("It works!"); 
これが行われ、何が可能か

の文字列のためのequals方法バッファリングされた入力リーダーを使用してこれを行うには?これはjava.util.Scannerを使用して動作し、複数の「入力」キーストロークがかかります

+2

正常に動作し、彼らは同じを参照するかどうかを判断するために2つのオブジェクト参照を比較していない '=='とSTRING'の 'equals'方法、'と 'STRING'値を比較オブジェクト。 – rgettman

+0

まず第一に、Javaでは文字列を==と比較しないでください。 – Kon

+0

ありがとうございます。 'equalsメソッドを使って文字列を比較する' –

答えて

20

Scanner scanner = new Scanner(System.in); 
    String readString = scanner.nextLine(); 
    while(readString!=null) { 
     System.out.println(readString); 

     if (readString.isEmpty()) { 
      System.out.println("Read Enter Key."); 
     } 

     if (scanner.hasNextLine()) { 
      readString = scanner.nextLine(); 
     } else { 
      readString = null; 
     } 
    } 

それを打破するには、次の

Scanner scanner = new Scanner(System.in); 
String readString = scanner.nextLine(); 

これらの行から読んでいる新しいScannerを初期化しますstandard input stream(キーボード)とそれから1行を読み込みます。

while(readString!=null) { 
     System.out.println(readString); 

スキャナはまだヌル以外のデータを返していますが、各行を画面に印刷します。 「入力」(または戻り、または任意の)キーを入力することにより供給された場合

 if (readString.isEmpty()) { 
      System.out.println("Read Enter Key."); 
     } 

nextLine()方法は、空の文字列を戻します。文字列が空であるかどうかを調べることによって、そのキーが押されたかどうかを判断することができます。ここにテキストEnterキーが印刷されていますが、ここで必要な操作を実行することができます。コンテンツを印刷および/または「Enter」キーを押したときに、私たちはスキャナが別のラインを持っているかどうかをチェックし、何かをやった後、最後に

 if (scanner.hasNextLine()) { 
      readString = scanner.nextLine(); 
     } else { 
      readString = null; 
     } 

、。標準入力ストリームの場合、このメソッドは、ストリームが閉じられるか、プログラムの実行が終了するか、またはそれ以上の入力が供給されるまで「ブロック」します。

0
Scanner scan = new Scanner(System.in); 
     int i = scan.nextInt(); 
     Double d = scan.nextDouble(); 


     String newStr = ""; 
     Scanner charScanner = new Scanner(System.in).useDelimiter("(\\b|\\B)") ; 
     while(charScanner.hasNext()) { 
      String c = charScanner.next(); 

      if (c.equalsIgnoreCase("\r")) { 
       break; 
      } 
      else { 
       newStr += c;  
      } 
     } 

     System.out.println("String: " + newStr); 
     System.out.println("Int: " + i); 
     System.out.println("Double: " + d); 

このコードは

関連する問題