Hallo, ich habe folgendes Problem: ich möchte eine Klasse schreiben, die dem Benutzer die Eingabe einer Integerzahl erlaubt. Die entsprechende Methode der Klasse soll folgendermaßen aussehen:
Wenn nun versehentlich ein String eingegeben wird und die Exception aufgerufen wird (was auch einwandfrei funktioniert) soll sich die Methode einfach nochmal selber aufrufen. Und genau hier liegt mein Problem. Das macht sie zwar auch, aber nachdem sie sich aufgerufen hat und dann erfolgreich beendet wurde, wird der alte Methodenaufruf fortgesetzt (so wie das bei Rekursion nun einmal ist). Könnt ihr mir vielleicht eine saubere und elegante Lösung verraten, wie ich es ganz einfach schaffen kann, dass sich die Methode noch einmal aufruft und dann den i-Wert übergibt und dann ende ist ?
Vielen Dank schon mal im Voraus für Eure Mühe,
Andreas
Code:
public static int read_int (String def)
{
String s = null;
int i = 0;
in = new BufferedReader (new InputStreamReader (System.in));
try
{
System.out.print (def);
s = in.readLine ();
i = Integer.parseInt (s);
}
catch (NumberFormatException nfe)
{
System.out.println (nfe.getMessage ());
def = "error: " + def;
read_int (def);
}
return i;
}
Wenn nun versehentlich ein String eingegeben wird und die Exception aufgerufen wird (was auch einwandfrei funktioniert) soll sich die Methode einfach nochmal selber aufrufen. Und genau hier liegt mein Problem. Das macht sie zwar auch, aber nachdem sie sich aufgerufen hat und dann erfolgreich beendet wurde, wird der alte Methodenaufruf fortgesetzt (so wie das bei Rekursion nun einmal ist). Könnt ihr mir vielleicht eine saubere und elegante Lösung verraten, wie ich es ganz einfach schaffen kann, dass sich die Methode noch einmal aufruft und dann den i-Wert übergibt und dann ende ist ?
Vielen Dank schon mal im Voraus für Eure Mühe,
Andreas