return funktioniert nicht bzw. wird ignoriert

Hallo Forum!

So sieht die ursprüngliche Methode aus (ich hab sie aus dem Web):

Code:
	public static char readChar() {
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
		String line="";
		System.out.flush();
		try {
			line=reader.readLine();
			if (line.length()>0) return line.charAt(0);
		} catch (Exception e) {
			System.out.println(e);
		}
		return ' ';
	}

Der User soll eine Eingabe machen, das erste Zeichen der Zeichenkette ist der Rückgabewert der Methode:

Code:
		InPut myInput_1 = new InPut();
		String inputString = myInput_1.readString();
		System.out.println(inputString);

Soweit so gut.

Nun lautet die Aufgabe, die Methode so umzubasteln, dass eine gültige Eingabe (ein Character) erzwungen wird.

Code:
	public static char readChar(boolean enforce) {
		System.out.println("Versuch");
		if(!enforce) {
			readChar();
		} else {
			BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
			String line="";
			System.out.flush();
			try {
				line=reader.readLine();
				if (line.length()!=1)
				{
					readChar(true);
				} else {
					System.out.println(line.charAt(0) + "-bebebe");
					return line.charAt(0);
				}
			} catch (Exception e) {
				System.out.println(e);
			}
		}
		return 'r';
		
	}

Die Methode guckt, ob die eingegebene Zeichenkette ein Zeichen lang ist; falls ja, soll das Zeichen an der nullten Stelle (also das einzige Zeichen) der Zeichenkette zurückgegeben werden; falls nein, wird die Methode wieder aufgerugen.

Der Code in der Main-Classe:

Code:
		ReadChar myInput_2 = new ReadChar();
		char inputChar = myInput_2.readChar(true);
		System.out.println(inputChar);

Nun gibt es ein Prblem: die return-Anweisung im else-Block wird ignoriert. Nur, wenn gleich beim ersten Versuch eine gültige Eigabe gemacht wurde, kriegt man das Eingegebene auch als return-Wert -- ansonsten wird die return-Anweisung im esle-Block übersprungen und man bekommt dem entsprechend immer den Standard-Rückgabewert ('r') zurück... (Es wird nicht der ganze else-Block übersprungen -- s. syso(bebebe) -- sondern nur das return.)

Was mache ich falsch?

Danke.
 
Zurück