Endlosschleife - Warum?

selina55555

Mitglied
Hallo,

ich habe eine kurze Methode geschrieben, die dividieren soll.
Bei der Eingabe eines Zeichens, das keine Zahl ist soll eine Fehlermeldung kommen (per Exception). Dies soll auch über eine andere Exception passieren, falls durch 0 dividiert wird.

Beim Ausführen habe ich als erstes 8 und dann a eingetippt. Dabei entsteht eine Endlosschleife und die zugehörige Meldung bei InputMismatchException wird in einer Endlosschleife ausgegeben. Woran liegt das?

Ich möchte gerne, dass nach einer falschen Eingabe lediglich der Benutzer erneut aufgefordert wird eine Zahl einzugeben. Bei dem Versuch durch 0 zu dividieren funktioniert das auch. Nur bei InputMismatchException klappt es nicht.

Ich würde mich sehr freuen, wenn mit jemand behilflich sein kann, da ich den Fehler alleine nicht finden konnte.

Code:
import java.util.*;

public class main {

    public static void main(String[] args) {
    Scanner input = new Scanner (System.in);
    int x=1;
    do {
        //try this
       try {
            System.out.println("Enter your first number");
            int n1 = input.nextInt();
            System.out.println("Enter your second number");
            int n2 = input.nextInt();
            double diff = n1/n2;
            System.out.println(diff);
            x=2; //successful diff
        }
        //if you have an error do this
        catch (InputMismatchException e) {
            System.out.println("Only idiots try to divide by other things than numbers");
        }
       
       catch(Exception e){
            System.out.println("You can't do that.");
        }
    }
    while (x==1);
}
}
 

Kababär

Top Contributor
Also was hier geschieht ist, dass du, wenn du a eintippst, in den ersten catch-Block gerätst.
Dann gehst du wieder in das try und versucht, wieder a einzulesen, da sich der Zeiger des Scanners noch nicht bewegt hat, weil er eben im ersten catch-Block gelandet ist.
Also um den Zeiger weiter zu bewegen und somit das wirklich nächste Zeichen einzulesen, müsstest du im catch-Block 'input.next();' aufrufen.

Aber das geht generell auch etwas eleganter, wie man mit einem Scanner einlesen kann.

Da sich x nie änder,t würde ich lieber ein boolean nehmen.
A la

Code:
boolean b = true
whiel(b){


}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Hilfe bei Endlosschleife Java Basics - Anfänger-Themen 2
B In einem Thread Endlosschleife beenden Java Basics - Anfänger-Themen 19
noah1407 endlosschleife Java Basics - Anfänger-Themen 7
G Endlosschleife keine Rückgabe Java Basics - Anfänger-Themen 36
sserio Endlosschleife ja nein? Java Basics - Anfänger-Themen 13
javapingu Endlosschleife bei User Input mit try Scanner Java Basics - Anfänger-Themen 7
B Endlosschleife Thread sauber beenden Java Basics - Anfänger-Themen 19
S While-Schleife geht in Endlosschleife über, warum? Java Basics - Anfänger-Themen 6
O Endlosschleife abbrechen Java Basics - Anfänger-Themen 10
S Endlosschleife beim Ausgeben einer LinkedList Java Basics - Anfänger-Themen 2
S Interpreter-Fehler Endlosschleife zur Laufzeit aber warum? Java Basics - Anfänger-Themen 15
T Erste Schritte Endlosschleife & wozu braucht man /* und */ Java Basics - Anfänger-Themen 19
J Endlosschleife bei Try-Catch? Java Basics - Anfänger-Themen 3
C Endlosschleife bei füllen von Daten im JTable Java Basics - Anfänger-Themen 5
C Collatzfolge endlosschleife. Java Basics - Anfänger-Themen 4
D Array in Endlosschleife überschreibt vorherige Werte Java Basics - Anfänger-Themen 4
E Eulersche Zahl berechnen, Endlosschleife Java Basics - Anfänger-Themen 2
N Endlosschleife... Warum? Java Basics - Anfänger-Themen 12
P Kapselung Problem - Endlosschleife Java Basics - Anfänger-Themen 10
M Endlosschleife bricht durch switch ab Java Basics - Anfänger-Themen 17
D Endlosschleife und ich komme nicht raus! Java Basics - Anfänger-Themen 8
N Erste Schritte Endlosschleife und Exception Java Basics - Anfänger-Themen 5
R Endlosschleife nach InputMismatchException Java Basics - Anfänger-Themen 2
S Endlosschleife? Java Basics - Anfänger-Themen 2
T Endlosschleife Java Basics - Anfänger-Themen 2
Z Endlosschleife Java Basics - Anfänger-Themen 6
T Endlosschleife Java Basics - Anfänger-Themen 12
H Wieso ist das eine Endlosschleife? Java Basics - Anfänger-Themen 8
StupidAttack Endlosschleife, Sockets Java Basics - Anfänger-Themen 2
C ungewollte Abbrüche in einer Endlosschleife Java Basics - Anfänger-Themen 6
E komische endlosschleife Java Basics - Anfänger-Themen 6
7 Endlosschleife pausieren Java Basics - Anfänger-Themen 11
F .readLine() erzeugt endlosschleife Java Basics - Anfänger-Themen 4
R Wieso hänge ich hier in einer Endlosschleife (vermute ich zumindest)? Java Basics - Anfänger-Themen 2
F Falscheingabe abfangen - Endlosschleife Java Basics - Anfänger-Themen 5
R warum endlosschleife? Java Basics - Anfänger-Themen 7
W Fakultät, warum Endlosschleife? Java Basics - Anfänger-Themen 15
S JTable Endlosschleife Java Basics - Anfänger-Themen 5
J Aus endlosschleife kommen Java Basics - Anfänger-Themen 5
R Endlosschleife verhindert das Schließen des Fensters Java Basics - Anfänger-Themen 10
Povlsen84 Endlosschleife Java Basics - Anfänger-Themen 5
V Bubble Sort endet in Endlosschleife Java Basics - Anfänger-Themen 4
Antoras Endlosschleife Java Basics - Anfänger-Themen 8
J Wartezustand in Endlosschleife - bessere Alternativen Java Basics - Anfänger-Themen 20
H Problem beim Einlesen einer Datei (Endlosschleife ?) Java Basics - Anfänger-Themen 3
N Endlosschleife? Java Basics - Anfänger-Themen 3
V mehrere Threads starten + Endlosschleife Java Basics - Anfänger-Themen 3
I Hilfe wer findet mein Fehler in bei der Endlosschleife Java Basics - Anfänger-Themen 7
G Sound/Endlosschleife/Abbruchproblem Java Basics - Anfänger-Themen 3
G HappyNumbers - Endlosschleife Java Basics - Anfänger-Themen 11
0 Endlosschleife beim Integer Array mischen? Java Basics - Anfänger-Themen 3
M OutputStream funktioniert nur in Endlosschleife ? Java Basics - Anfänger-Themen 4
G Endlosschleife, aber warum? Java Basics - Anfänger-Themen 12
G Endlosschleife beenden Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben