einfach BufferedReader Frage
-
Ich habe folgendes Programm geschrieben (ist noch nicht ganz fertig)
public class CaesarEncrypter { public static void main(String[] args ) { try { System.out.println("Verschlüsseln (V,v) oder Entschlüsseln (E,e) ?"); int input = 0; // v = 118; V = 86; E = 69; e = 101 while( input != 118 && input != 86 && input != 69 && input != 101 ) input = System.in.read(); if( input == 118 || input == 86 ) { System.out.println("Sie haben \"Verschlüsseln\" gewählt. Bitte geben Sie den zu verschlüsselnden Text ein:"); BufferedReader bf = new BufferedReader( new InputStreamReader( System.in ) ); String text = bf.readLine(); System.out.println("Text:\n" + text ); } else { System.out.println("Sie haben \"Entschlüsseln\" gewählt. Bitte geben Sie den zu entschlüsselnden Text ein:"); } } catch (Exception e ) { e.printStackTrace(); } } }
Das Programm verschlüsselt Text, indem es die Buchstaben um zB 5 nach rechts verschieb, d.h. zB das aus A ein E wird usw. Der "Verschlüsselungsteil" fehlt noch. Allerdings habe ich ein ganz anderes Problem. Und zwar liest der BufferedReader nicht von System.in . Eigentlich soll er einen Text lesen bis ich Return drücke. Macht er aber nicht er skipt einfach den Befehl.
Die Zeile bf.readLine() funktioniert nicht. Stattdessen ist nach der Eingabe von v oder V das Programm sofort beendet. Die Ausgabe sieht dann so aus:
Verschlüsseln (V,v) oder Entschlüsseln (E,e) ? v Sie haben "Verschlüsseln" gewählt. Bitte geben Sie den zu verschlüsselnden Text ein: Text:
Wie man sieht hatte ich keine Chance eine Zeile auf System.in einzugeben. Ich benutze Java 1.5 unter Mac OS X. Was kann das sein?
-
Im System.in steck noch das "Enter" von oben drin. Du liest ja nur ein Zeichen aus.
try { System.out.println("Verschlüsseln (V,v) oder Entschlüsseln (E,e) ?"); int input = 0; // v = 118; V = 86; E = 69; e = 101 while( input != 118 && input != 86 && input != 69 && input != 101 ) input = System.in.read(); //System.in leer machen System.in.skip(System.in.available()); if( input == 118 || input == 86 ) { System.out.println("Sie haben \"Verschlüsseln\" gewählt. Bitte geben Sie den zu verschlüsselnden Text ein:"); BufferedReader bf = new BufferedReader( new InputStreamReader( System.in ) ); String text = bf.readLine(); System.out.println("Text:\n" + text ); } else { System.out.println("Sie haben \"Entschlüsseln\" gewählt. Bitte geben Sie den zu entschlüsselnden Text ein:"); } } catch (Exception e ) { e.printStackTrace(); } }