2013-08-16 5 views
12

gedrückt Ich programmiere Java verwenden.
ich Code schreiben versuchen, die erkennen kann, wenn der Benutzer die Eingabetaste drückt in einem Konsole basierenden Programm.Java-Scanner Enter-Taste

Wie kann ich tun, um diese mit Java. Mir wurde gesagt, dass dies entweder mit einem Scanner oder einem gepufferten Eingabegerät möglich ist. Ich verstehe nicht (oder weiß, wie man es benutzt) gepufferter Eingabe-Leser.

Ich habe versucht, dies mit Scanner zu tun tun, aber zweimal das Programm beendet wird nach dem Pressen eingeben, und es funktioniert nicht

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!"); 

Dank

- Bearbeiten - der folgende Code funktioniert mit die equals Methode für die Zeichenfolge statt ==

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!"); 

, wie dies geschehen kann, und was sind die Profis, dies mit dem gepufferten Eingabe-Reader zu tun?

+2

Vergleichen 'String' Werte mit' String' des 'equals' Methode, nicht mit' == ', die zwei Objektreferenzen vergleicht, um zu bestimmen, ob sie auf das gleiche verweisen Objekt. – rgettman

+0

Vergleichen Sie niemals Strings mit == in Java. – Kon

+0

Danke, 'Strings mit der equals-Methode vergleichen' –

Antwort

20

Diese java.util.Scanner arbeitet mit und wird mehrere "Enter" Tastenanschläge nehmen:

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; 
     } 
    } 

Um es zu brechen:

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

Diese Zeilen initialisieren ein neues Scanner, die von liest die standard input stream (die Tastatur) und liest eine einzelne Zeile daraus.

Während der Scanner immer noch Daten zurückgibt, die nicht Null sind, drucken Sie jede Zeile auf den Bildschirm.

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

Wenn die „Enter“ (oder zurückzukehren, oder was auch immer) Taste durch den Eingang zugeführt wird, wird die nextLine() Methode wird eine leere Zeichenfolge zurück; Durch Überprüfen, ob die Zeichenfolge leer ist, können wir feststellen, ob diese Taste gedrückt wurde. Hier wird der Text lesen Enter-Taste gedruckt wird, aber man konnte durchführen, was Aktion, die Sie hier wollen.

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

schließlich nach dem Drucken des Inhalts und/oder etwas zu tun, wenn die „Enter“ -Taste gedrückt wird, überprüfen wir, ob der Scanner eine andere Linie hat; für den Standard-Eingabestrom ist, wird diese Methode „Block“, bis entweder der Strom geschlossen wird, endet die Ausführung des Programms oder weiterer Eingang zugeführt wird.

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); 

Dieser Code funktioniert gut