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();
            } 
           }
    

Anmelden zum Antworten