Guin
Registered User
Hallo Leute.
Ich bin gezwungen mich nun mit Java auseinander zu setzen.
Hier eine Schilderung fuer Java Experten.
Bei einem kleinen Test ist mir etwas mir nicht verstaendliches aufgefallen.
Hier das Skript (es soll das Eingegebene [3 Techniken] wieder ausgeben)
Um den Eingabepuffer zu "leeren" verwende ich skip()
"System.in.skip(System.in.available());"
Mit dieser Methode (mit available() ) kommt es zu keiner Exception wenn ich als Eingabe ^Z ([strg]+z) taetige.
Wenn ich
System.in.skip(200);
benutze, dann kommt es zu einer Exception.
Woran liegt dieser Unterschied?
Win XP SP2, Java 1.6
Gruss
Guin
Ich bin gezwungen mich nun mit Java auseinander zu setzen.
Hier eine Schilderung fuer Java Experten.
Bei einem kleinen Test ist mir etwas mir nicht verstaendliches aufgefallen.
Hier das Skript (es soll das Eingegebene [3 Techniken] wieder ausgeben)
Code:
import java.io.* ;
/**
* Class Eingabe
* Dateiname: Eingabe.java
* @version 1.00, 21.03.2007
*
*/
public class Eingabe
{
/** Methode main startet das Programm. Es es werden insgesamt
* drei Eingaben erwartet.
*@Param String[] args Übergabeparameter des Programmaufrufs
*/
public static void main(String[] args) throws IOException
{ // wir leiten die Exception einfach
//nach oben weiter, nicht unser Problem
/** Variable enthaelt den Integerwert des eingegebenen Zeichens
* bei Einbae 1 und Eingabe 2.*/
int i=32;
/** Variable enthaelt den String der dritten Eingabe.*/
String expr = new String();
// 1. Eingabe
System.out.print("\nEingabe bitte: ");
i=System.in.read();
System.in.skip(System.in.available());
System.out.println(" Char: "+ (char)i +
"\n Eingabetechnik: System.in.read() OHNE Ausnahmebehandlung");
// 2. Eingabe
System.out.print("\n\nEingabe bitte: ");
try{ // versuch doch mal, ob's klappt
i=System.in.read(); // zweite Eingabe: Einzelzeichen
System.in.skip(System.in.available()); // Eingabespeicher leeren
} // try
catch (java.io.IOException e){
System.err.println("Eingabefehler: "+e.toString());
} // catch (java.io.IOException)
System.out.println(" Char: "+ (char)i +
"\n Eingabetechnik: System.in.read() MIT Ausnahmebehandlung");
// 3. Eingabe
BufferedReader In = new BufferedReader (new InputStreamReader (System.in));
System.out.print ("\nEingabe: ");
expr = In.readLine();
System.out.println(" String: "+ expr +"\n Eingabetechnik: BufferedReader");
}// main(String[] args)
} // public class Eingabe
"System.in.skip(System.in.available());"
Mit dieser Methode (mit available() ) kommt es zu keiner Exception wenn ich als Eingabe ^Z ([strg]+z) taetige.
Wenn ich
System.in.skip(200);
benutze, dann kommt es zu einer Exception.
Woran liegt dieser Unterschied?
Win XP SP2, Java 1.6
Gruss
Guin
Last edited by a moderator: