Was meint Ihr wird scan.nextDouble()
zurückgeben, wenn der Anwender eine Ganzzahl wie 211
eingibt?
Die Zeichen werden in ein double
konvertiert.
Die eingegebenen Zeichen werden automatisch in ein double
konvertiert, auch wenn die Input-Zeichen keinen Dezimalpunkt haben.
Wenn die eingegebenen Zeichen NICHT in ein double
konvertiert werden können, löst Java eine Ausnahme aus und hält das Programm an. (Ein späteres Kapitel bespricht die Behandlung von Ausnahmen.)
Zum Beispiel:
D:\daten\JavaNotes\kap11>java DoubleDouble
Geben Sie ein double ein : unsinn
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
at DoubleDouble.main(DoubleDouble.java:14)
Der Input könnte mit Zeichen beginnen, die konvertiert werden können, gefolgt von einem oder mehreren Leerzeichen und vielleicht zusätzlichen Zeichen. Wenn das passiert, scannt nextDouble()
nur die Zeichen, die konvertiert werden können.
D:\daten\JavaNotes\kap11>java DoubleDouble Geben Sie ein double ein: 3,14 und weitere Zeichen
Wenn das Programm die nextDouble()
Methode erneut aufruft, wird sie da weitermachen, wo der vorherige Aufruf aufgehört hat. Sie wird keine Zeichen finden, die konvertiert werden können, und wird eine Ausnahme auslösen.
Wird der folgende Input mit dem oben stehenden Programm funktionieren?
D:\daten\JavaNotes\kap11>java DoubleDouble Geben Sie ein double ein: -97,65