Warum stoße ich auf InputMismatchException, wenn ich versuche, doppelte Werte einzugeben?
Im bereitgestellten Code tritt eine InputMismatchException auf, weil nextDouble( )-Methode verarbeitet Dezimaleingaben nicht korrekt.
Erklärung:
In Ihrem Code befindet sich die folgende Zeile:
num = reader.nextDouble();
Diese Zeile versucht, mithilfe der nextDouble()-Methode der Scanner-Klasse einen Double-Wert aus der Standardeingabe zu lesen. Wenn Sie jedoch einen doppelten Wert mit einem Dezimalpunkt eingeben (z. B. 1,2), wird dieser nicht richtig interpretiert.
Lösung:
Um dieses Problem zu beheben, müssen Sie Sie sollten Ihren Code so ändern, dass er Dezimaleingaben verarbeitet, indem Sie das Eingabetrennzeichen so ändern, dass Dezimaltrennzeichen zulässig sind. Anstatt das Standardtrennzeichen (Leerzeichen) zu verwenden, können Sie , (Komma) als neues Trennzeichen verwenden, sodass der Benutzer Dezimalwerte wie 1,2 eingeben kann.
Verwenden Sie dazu die Methode useDelimiter auf der Scannerobjekt vor dem Lesen der Eingabe. Hier ist der geänderte Code:
Scanner reader = new Scanner(System.in).useDelimiter(",");
Durch diese Änderung interpretiert die nextDouble()-Methode die Dezimaleingabe korrekt und Sie sollten nicht mehr auf die InputMismatchException stoßen.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich eine InputMismatchException, wenn ich doppelte Werte aus der Konsole lese?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!