automatix1311
Mitglied
Hallo Forum!
So sieht die ursprüngliche Methode aus (ich hab sie aus dem Web):
Der User soll eine Eingabe machen, das erste Zeichen der Zeichenkette ist der Rückgabewert der Methode:
Soweit so gut.
Nun lautet die Aufgabe, die Methode so umzubasteln, dass eine gültige Eingabe (ein Character) erzwungen wird.
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:
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.
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.