webentwicklung-frage-antwort-db.com.de

Java mit Scanner-Eingabetaste gedrückt

Ich programmiere mit Java.
Ich versuche, Code zu schreiben, der erkennen kann, ob der Benutzer die Eingabetaste in einem Konsolen-basierten Programm drückt.

Wie mache ich das mit Java? Mir wurde gesagt, dass dies entweder mit einem Scanner oder einem gepufferten Eingabe-Lesegerät erfolgen kann. Ich verstehe (oder weiß nicht, wie ich) gepufferte Eingabe-Lesegeräte.

Ich habe versucht, dies mit einem Scanner zu tun, aber nach zweimaligem Drücken von enter wird das Programm beendet 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!");

Vielen Dank 

- edit -- Der folgende Code verwendet die equals-Methode für die Zeichenfolge anstelle von ==.

    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 kann das gemacht werden, und was sind die Vorteile dafür, wenn der gepufferte Eingabeleser verwendet wird?

15
H J

Dies funktioniert mit Java.util.Scanner und erfordert mehrere Eingabetasten:

    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 aufzubrechen:

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

Diese Zeilen initialisieren eine neue Scanner, die aus dem Standard-Eingabestrom (der Tastatur) liest und eine einzelne Zeile daraus liest.

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

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

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

Wenn die Eingabetaste "enter" (oder return oder was auch immer) eingegeben wird, gibt die nextLine()-Methode eine leere Zeichenfolge zurück. Durch Überprüfen, ob die Zeichenfolge leer ist, können wir feststellen, ob die Taste gedrückt wurde. Hier wird der Text Lesen Eingabetaste gedruckt, Sie können jedoch jede gewünschte Aktion ausführen.

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

Nachdem wir den Inhalt gedruckt haben und/oder nach Drücken der Eingabetaste etwas tun, prüfen wir, ob der Scanner eine andere Zeile hat. Für den Standard-Eingabestrom wird diese Methode "blockiert", bis entweder der Strom geschlossen, die Ausführung des Programms beendet oder weitere Eingaben bereitgestellt werden.

23
Caleb Brinkman
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

0
priya raj