2013-08-16 17 views
12

Programuję używając Java.
Próbuję napisać kod, który może rozpoznać, czy użytkownik naciśnie klawisz Enter w programie opartym na konsoli .Java za pomocą klawisza Enter przy użyciu skanera wciśniętego

Jak zrobić to za pomocą java. Powiedziano mi, że można to zrobić za pomocą skanera lub buforowanego czytnika wejściowego. Nie rozumiem (lub nie wiem, jak używać) buforowanego czytnika wejściowego.

starałem się zrobić to za pomocą skanera zrobić, ale po naciśnięciu wprowadź dwukrotnie program kończy się, i to nie działa

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

Dzięki

- edycja - Następujący kod działa przy użyciu metoda equals dla struny zamiast ==

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

jak można to zrobić, i jakie są plusy do tego przy użyciu buforowanego czytnika wejściowego?

+2

Porównaj 'wartości String' z' metody equals' String', a nie z '' ==, który porównuje dwie referencje obiektów do określenia, czy odnoszą się one do tego samego obiekt. – rgettman

+0

Po pierwsze, nigdy nie porównuj ciągów znaków z == w Javie. – Kon

+0

Dzięki, "porównaj ciągi za pomocą metody równości" –

Odpowiedz

20

to działa przy użyciu java.util.Scanner i zajmie kilka klawiszy "Enter":

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

rozbicie go:

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

Te linie zainicjować nową Scanner że czyta z standard input stream (klawiatura) i odczytuje z niego jedną linię.

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

Podczas gdy skaner wciąż zwraca dane inne niż null, wydrukuj każdą linię na ekranie.

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

Jeśli „enter” (lub powrotu, lub cokolwiek) klucz jest dostarczany przez wejście, metoda nextLine() zwróci pusty ciąg; sprawdzając, czy łańcuch jest pusty, możemy określić, czy ten klawisz został naciśnięty. Tutaj wydrukowany zostaje tekst , ale możesz tu wykonać dowolną akcję.

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

Wreszcie, po wydrukowaniu zawartości i/lub robi coś, gdy „Enter” jest wciśnięty, możemy sprawdzić, czy skaner ma inną linię; dla standardowego strumienia wejściowego ta metoda będzie "blokować", dopóki nie zostanie zamknięty strumień, wykonanie programu się zakończy, lub zostaną dostarczone dalsze dane wejściowe.

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

Ten kod działa poprawnie

Powiązane problemy