# WIE Tastaturpuffer löschen ?



## ernst (13. Jul 2007)

Hallo allerseits,
Ich will mehrere Zeichen (keine Zeichenkette) hintereinander über Tastatur einlesen.
Wenn ich z.B. das Zeichen A eingebe und die Eingabe mit Enter abschliesse, steht im Tastaturpuffer außer dem ASCII-Wert von A noch die ASCII-Werte 13 und 10.
Deswegen will ich nach Eingabe eines Zeichens den Tastaturpuffer löschen.
Wie wird das gemacht?

Mein Testprogramm:
---------------------------------------------------------------------------------

```
import java.io.*;

	public class Maintest1 {
		public static void main(String argv[]) throws IOException{
			int zeichenWert;
		    char zeichen;
		    System.out.println("Bitte Zeichen eingeben");
                    // Eingabe des Zeichens A und Enter
		    zeichenWert = System.in.read();
		    zeichen = (char) zeichenWert;
		    System.out.println("Das Zeichen ist:"+zeichen);
		    
		    zeichenWert = System.in.read();
		    zeichen = (char) zeichenWert;		    
                    // Ausgabe: 13
		    System.out.println("Das Zeichen ist:"+zeichenWert);

		    
		    if(zeichen=='\n'){
		    	System.out.println("Das Zeichen ist: '\n'");
		    }
		    else{
		    	System.out.println("Das Zeichen ist nicht: '\n'");		    	
		    }

		    zeichenWert = System.in.read();
                    // Ausgabe: 10
		    System.out.println("Das Zeichen ist:"+zeichenWert);
   
		    
		}
	}
```
---------------------------------------------------------------------------------


mfg
Ernst


----------



## Xams (13. Jul 2007)

Wenn du mit Tastaturpuffer die Variable zeichenwert meinst

 zeichenwert = null
immer nach den System.out.println(...);
??


----------



## Guest (13. Jul 2007)

Gar nicht. Java hat so etwas nicht. Das aus C bekannt ..flush... (irgendwas in der Art) gibts in Java so nicht und es wird auch nicht gebraucht. Die ASCII-Zeichen 13 und 10 stehen für Enter (+1 Zeile und zum Zeilenanfang).


----------



## P3AC3MAK3R (13. Jul 2007)

Kommst Du vielleicht mit der Klasse Console weiter?



> *readLine*
> public String readLine(String fmt,
> Object... args)
> Provides a formatted prompt, then reads a single line of text from the console.
> ...


----------



## ernst (13. Jul 2007)

Java-Freak hat gesagt.:
			
		

> Wenn du mit Tastaturpuffer die Variable zeichenwert meinst
> 
> zeichenwert = null
> immer nach den System.out.println(...);
> ??


Ich weiss nicht was du meinst, aber:

Wie kann ich zwei Zeichen, die ich über Tastatur eingebe, auslesen?
Wenn durch das Drücken der Taste ENTER 13 und 10 in den Tastaturpuffer geschrieben werden, lese ich doch beim zweiten System.in.read() doch die 13 aus, anstatt des zweiten von mir eingegebenen Zeichens.
Das folgende funktioniert also nicht:
--------------------------------------------
zeichenWert = System.in.read();
// Hier wird zwar das eingegebene Zeichen A ausgegeben
System.out.println("Das Zeichen ist:"+zeichenWert);

zeichenWert = System.in.read();
// Aber hier wird nicht B ausgegeben, sondern 13
System.out.println("Das Zeichen ist:"+zeichenWert);
------------------------------------------------------------
Frage:
Wenn ich also den Tastaturpuffer nicht löschen kann, wie kann ich dann das zweite eingebene Zeichen auslesen?


mfg
Ernst


----------



## madboy (13. Jul 2007)

```
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
      try {
        String s1 = reader.readLine();
        System.out.println(s1);
        String s2 = reader.readLine();
        System.out.println(s2);
        reader.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
```

Edit: die Alternative wäre, einfach nach jedem gelesenen Zeichen zwei zu "überspringen". Beispielsweise mit 
	
	
	
	





```
System.in.read(new byte[2]);
```


----------



## ernst (13. Jul 2007)

madboy hat gesagt.:
			
		

> ```
> BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
> try {
> String s1 = reader.readLine();
> ...


Der Tipp ist gut!

mfg
Ernst


----------



## ernst (13. Jul 2007)

Java-Freak hat gesagt.:
			
		

> Wenn du mit Tastaturpuffer die Variable zeichenwert meinst
> 
> zeichenwert = null
> immer nach den System.out.println(...);
> ??



1)
zeichenwert = null oder
zeichenwert = NULL 
gibt bei mir einen Syntaxfehler

2)
Was meinst du mit:
"immer nach den System.out.println(...);"

mfg
Ernst


----------



## merlin2 (13. Jul 2007)

Jede Anweisung muss mit einem Semikolon abgeschlossen sein.


----------

