Heim > Java > javaLernprogramm > Wie verhindert man Endlosschleifen bei der Behandlung von InputMismatchException in Java?

Wie verhindert man Endlosschleifen bei der Behandlung von InputMismatchException in Java?

DDD
Freigeben: 2024-12-24 00:38:14
Original
424 Leute haben es durchsucht

How to Prevent Infinite Loops When Handling InputMismatchException in Java?

Endlosschleife im Try/Catch-Block mit InputMismatchException: Eine Lösung

Ihr Java-Programm stößt bei der Behandlung einer InputMismatchException in einem Versuch auf eine Endlosschleife /catch-Block, während ganzzahlige Eingaben vom Benutzer entgegengenommen werden. Dieses Verhalten ist auf die Tatsache zurückzuführen, dass der Scanner nach dem Abfangen der InputMismatchException in einem ungültigen Zustand bleibt, was dazu führt, dass die Schleife auf unbestimmte Zeit wiederholt wird.

Um dieses Problem zu beheben, müssen Sie die folgenden Vorgänge innerhalb des Catch-Blocks ausführen :

catch (InputMismatchException e) {
    System.out.println("Error!");
    input.next(); // Move to the next line to avoid the infinite loop
}
Nach dem Login kopieren

Die Methode input.next() setzt den Scannerzeiger auf die nächste Zeile und verwirft so effektiv alle ungültigen Eingaben, die das verursacht haben Ausnahme.

Alternativ können Sie die Methode hasNextInt() verwenden, bevor Sie versuchen, eine Ganzzahl zu lesen, um so sicherzustellen, dass der gelesene Wert tatsächlich eine Ganzzahl ist. Dieser Ansatz macht die Ausnahmebehandlung vollständig überflüssig:

while (true) {
    if (input.hasNextInt()) {
        n1 = input.nextInt();
        break;
    } else {
        input.next(); // Skip non-numeric input
    }
}
Nach dem Login kopieren

Bedenken Sie, dass in der Java-Scanner-Dokumentation angegeben ist, dass der Scanner nach dem Auslösen einer InputMismatchException das für die Ausnahme verantwortliche Token nicht weitergibt, sodass es abgerufen werden muss oder auf andere Weise umgangen werden. Durch die Implementierung dieser Änderungen sollte das Endlosschleifenproblem in Ihrem Java-Programm behoben werden.

Das obige ist der detaillierte Inhalt vonWie verhindert man Endlosschleifen bei der Behandlung von InputMismatchException in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage