G
Guest
Gast
Hallo, ich habe folgendes Problem:
Ich habe mir einen einfachen ConsolenReader geschrieben, der verschiedene Ausgaben machen kann und Eingaben wieder einliest. Manchmal ( siehe unten bsp) ist es so, dass man Eingaben mehrfach tätigen muss, damit diese gelesen werden. Ich hab keinen blassen schimmer mehr, an was es liegen kann. Hier meine Methode. Das meiste ist zu ignorieren. der wichtige teil ist nur das while( ... ). Anstatt eines BufferedReader hatte ich auch schon nur einen InputStream genommen, auch einen BufferedInputStream habe ich schon getestet aber keine Chance. Dieser Einesefehler tritt eigentlich immer sporatisch auf aber immer!!! beim Hauptmenu ( siehe unten ) gleich nach dem Start der Anwendung. Ich hoffe ihr könnt mir helfen. Vielen Dank wako
( um den fragen "Wieso Konsolenanwendung" vorzubeugen....das tool soll auch unter unix laufen )
BEISPIEL:
Hauptmenü
1.) Versionsinformationen
2.) Konfigurator
3.) Generator
4.) Zeitstempelleser
5.) Beenden
Menünummer: 4
4
4
4
4
=================================
TimestampReader-Menü
1.) TimestampReader Hilfe
2.) Zeitstempel anzeigen
3.) Zeitstempel vergleichen
4.) Zurück
5.) Beenden
Menünummer:
Ich habe mir einen einfachen ConsolenReader geschrieben, der verschiedene Ausgaben machen kann und Eingaben wieder einliest. Manchmal ( siehe unten bsp) ist es so, dass man Eingaben mehrfach tätigen muss, damit diese gelesen werden. Ich hab keinen blassen schimmer mehr, an was es liegen kann. Hier meine Methode. Das meiste ist zu ignorieren. der wichtige teil ist nur das while( ... ). Anstatt eines BufferedReader hatte ich auch schon nur einen InputStream genommen, auch einen BufferedInputStream habe ich schon getestet aber keine Chance. Dieser Einesefehler tritt eigentlich immer sporatisch auf aber immer!!! beim Hauptmenu ( siehe unten ) gleich nach dem Start der Anwendung. Ich hoffe ihr könnt mir helfen. Vielen Dank wako
( um den fragen "Wieso Konsolenanwendung" vorzubeugen....das tool soll auch unter unix laufen )
Code:
private final BufferedReader in = new BufferedReader( new InputStreamReader( System.in ) );
public String printAndRead( String prefix, String text, String standard,
ConsoleInputFilter filter, String errormessage )
throws Exception {
String line = null;
String addtext = "";
if( standard != null && standard.length() > 0 ) {
addtext = "[" + standard + "]";
}
if( prefix == null ) {
prefix = "";
}
text = prefix + text + addtext + ": ";
System.out.print( text );
while( ( line = in.readLine() ) != null ) {
if( line.trim().length() == 0 ) {
if( standard != null ) {
line = standard;
}
}
if( ConsolenCommand.isConsolenCommand( line ) ) {
break;
}
if( ( filter != null ) ) {
if( filter.accept( line ) ) {
break;
}
if( errormessage == null ) {
System.out.print( "\n" + getDelimiterLine() + "\n\n" + text );
} else {
System.out.print( "\n" + getDelimiterLine() + "\n\n" + errormessage + "\n\n"
+ text );
}
} else {
break;
}
}
return line;
}
BEISPIEL:
Hauptmenü
1.) Versionsinformationen
2.) Konfigurator
3.) Generator
4.) Zeitstempelleser
5.) Beenden
Menünummer: 4
4
4
4
4
=================================
TimestampReader-Menü
1.) TimestampReader Hilfe
2.) Zeitstempel anzeigen
3.) Zeitstempel vergleichen
4.) Zurück
5.) Beenden
Menünummer: