Tastatureingabe auslesen und in Konsole ausgeben

Spiderpic98

Mitglied
Hallo,

ich versuche mit diesem Code, die Tastatureingabe in der Konsole auszugeben.
Zwar wird das Programm ausgeführt, jedoch passiert nichts. Und ich weiß nicht ob etwas fehlt oder ich etwas falsch gemacht habe.
Das Programm soll stoppen wenn Enter gedrückt wird.
Könnte mir bitte jemand helfen?


Java:
package courseprogI;
import java.io.IOException;
import java.util.Scanner;

public class Aufgabe {

    public static void main(String[] args) throws IOException {
        System.out.println("ausgeführt");
boolean run = true;
        Scanner scan = new Scanner(System.in);
       
       
        while(run) {
            System.out.println("programm startet");
            int data = scan.nextInt();
        System.out.println(data);
        if(data == 13) {
            scan.close();
            System.out.println("programm beendet");
        }
    }
   
        }

}
 
Zuletzt bearbeitet von einem Moderator:
Das Programm soll stoppen wenn Enter gedrückt wird.
Wie kommst du denn darauf, dass das Programm stoppen soll bei Enter? Das Programm stoppt, wenn du die Zahl 13 eingibst und dann Enter drückst.

Nimm mir das nicht übel, aber die Frage und der Code gehen für mich so aneinander vorbei, dass ich glaube du hast dir das einfach irgendwoher kopiert ohne es zu verstehen.
 
Wie kommst du denn darauf, dass das Programm stoppen soll bei Enter? Das Programm stoppt, wenn du die Zahl 13 eingibst und dann Enter drückst.

Nimm mir das nicht übel, aber die Frage und der Code gehen für mich so aneinander vorbei, dass ich glaube du hast dir das einfach irgendwoher kopiert ohne es zu verstehen.
Ich ging davon aus, dass mir Scanner, das jeweilige Zeichen, als Integer des Ascii Codes ausgeben würde und die 13 wäre das Enter.
Zumindest hatte ich so aus meinen Unterricht verstanden.
Sorry aber ich bin halt ein Anfänger.
 
Wobei es nicht stoppt, sondern mit einem Fehler abbricht, weil der Scanner geschlossen wurde und versucht wird vom Scanner zu lesen
 
Wobei es nicht stoppt, sondern mit einem Fehler abbricht, weil der Scanner geschlossen wurde und versucht wird vom Scanner zu lesen
Um das zu erklären: Deine Endlosschleife wird ja nicht dadurch beendet, dass Du dies per SysOut ausgibst!!
Du musst schon die Schleifenbedingung 'run' auf FALSE setzen!!
 
Ich ging davon aus, dass mir Scanner, das jeweilige Zeichen, als Integer des Ascii Codes ausgeben würde und die 13 wäre das Enter.
Zumindest hatte ich so aus meinen Unterricht verstanden.
Sorry aber ich bin halt ein Anfänger.
Du hast den Scanner komplett missverstanden. 13 ist die Eingabe 1 3 Enter und nicht die Enter Taste. Die Enter Taste bekommst Du nicht mit dem Scanner.

Scanner ist eine Methode. um in erster Linie Token basiert Text zu lesen. Davon abweichend ist lediglich das Lesen einer ganzen Zeile und natürlich bietet Scanner noch Methoden, die Token automatisch umzuwandeln.

Dein nextInt Aufruf erwartet also die Eingabe einer Zahl. Die Eingabe wird erst mit der Enter Taste ausgewertet. Es können mehrere Token eingegeben werden, die durch Whitespace getrennt sind. Also wenn Du mehrere int einliest, dann kann der Nutzer prinzipiell von Anfang an alle eingeben und scanner.nextInt würde dann beim zweiten integer gleich das Ergebnis zurück geben ohne zu stoppen....


Java:
import java.util.Scanner;
public class Test {
  public static void main(String... args) {
    Scanner scanner = new Scanner(System.in);
    System.out.print("Bitte Zahl eingeben: ");
    int zahl1 = scanner.nextInt();
    System.out.print("Bitte Zahl eingeben: ");
    int zahl2 = scanner.nextInt();
    System.out.println("Zahlen: " + zahl1 + " und " + zahl2);
  }
}

Das kann dann so laufen:
Code:
C:\temp>java Test
Bitte Zahl eingeben: 1 2
Bitte Zahl eingeben: Zahlen: 1 und 2

==> Es wurde direkt 1 und 2 eingegeben - daher sieht man bei der zweiten Eingabe keine Eingabe ... aber er hat beide Zahlen gelesen ...

Edit: Um es noch einmal deutlich zu sagen: Weder die Enter Taste noch die Whitespace bekommt man zu sehen! Die frisst der Scanner sozusagen, denn der Scanner arbeitet Token basiert. Du könntest also vor der 1 noch viele Leerzeichen und Tabs eingeben ... Auch zwischen zwei Token ... Wichtig ist nur: Die Abarbeitung startet erst nach dem Du Enter gedrückt hast.
 

Zurück
Oben