Try-Catch in Verwendung einer while Schleife

stehlo

Mitglied
Hallo Forum,
Ich habe folgendes Problem: ich muss ein Programm bei den Eingaben auf Exceptions überprüfen und ggf. verhindern.
in Codeausschnitt aus meinem Programm:

Code:
        Scanner scan = new Scanner(System.in);
        int hoechsteZahl=0;
        System.out.println("Bitte geben Sie eine maximale Zahl ein, bis zu der Zufallszahlen für die Rechnung generiert werden sollen.");

        while(true){
            try{int maxzahl = scan.nextInt();
                hoechsteZahl=maxzahl;
                break;}
            catch(Exception maxzahl){System.err.println("Ungültige Eingabe, versuchen Sie es bitte erneut");
                continue;}
            }

Es geht hierbei um einen Rechentrainer welcher mit der größten Zahl Aufgaben stellt.
Das Problem daran ist, dass wenn ich beispielsweise einen Buchstaben statt eines Integers eingebe, dann läuft dauernd die virtuelle Java Maschine mit der Meldung"Ungültige Eingabe, versuchen Sie es bitte erneut" und das hört erst auf, wenn ich die Maschine zurücksetze.

Ich möchte erreichen, dass wenn z.B. ein Buchstabe eingegeben wird, nach der Mldung "Ungültige Eingabe, versuchen Sie es bitte erneut" der Prozess nochmals von dem Try Block beginnt, also dass wieder eine Zahl eingelesen wird.

Warum ist das in meinem Codebeispiel nicht möglich ?

Danke und MfG Stefan
 
Ich möchte erreichen, dass wenn z.B. ein Buchstabe eingegeben wird, nach der Mldung "Ungültige Eingabe, versuchen Sie es bitte erneut" der Prozess nochmals von dem Try Block beginnt
Das passiert schon 😉

Das Problem ist, dass nextInt nur bis zum Zeilenumbruch liest, und alles danach ignoriert wird.
Du entweder die Zeile als ganzes einlesen, oder vor dem nächstem Lesen noch den Zeilenumbruch einlesen (zB mit nextLine).
 

Zurück
Oben