Java Anfänger Problem

fishhunter

Cadet 3rd Year
Registriert
Jan. 2010
Beiträge
52
Hallo,
Ich bin ein blutiger Java Anfänger und habe ein Problem bei einem CMD-Taschenrechner.

Ich bekomme folgenden Error wenn ich das Programm mit Zahlen rechnen lasse, die Nachkommastellen haben:

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 apples.main(Calculator.java:8)

Das hier ist mein Quellcode:
import java.util.Scanner;

class calculator {
public static void main(String args[]){
Scanner scan = new Scanner(System.in);
double fnum, snum, answer;
System.out.println("Enter first num: ");
fnum = scan.nextDouble();
System.out.println("Enter second num: ");
snum = scan.nextDouble();
answer = fnum + snum;
System.out.println(answer);
}
}


Woran kann das liegen ? Weil mit ganzen Zahlen geht es prima.

Vielen Dank schonmal im voraus.
 
Zuletzt bearbeitet:
Gibst du die double Werte mit Punkt oder Komma ein? Falls mit Komma: versuch's mal mit Punkt als Dezimaltrennzeichen.
 
samotyr schrieb:
Gibst du die double Werte mit Punkt oder Komma ein? Falls mit Komma: versuch's mal mit Punkt als Dezimaltrennzeichen.

Haha, also ich verstehs grad nicht. Ich habe es wie du mir schon ratest immer mit Punkt eingegeben. Da funktioniert es nicht! Aber wenn ich es mit Komma eingebe funktioniert es!
Das ist seltsam.

BTW: ich arbeite mit Eclipse. Selber fehler tritt aber bei Java Editor auf.
 
In deinem oben geposteten Code behandelst du die InputMissmatchException nicht, die der Scanner wirft, unabhängig davon, dass der Scanner nicht unbedingt, für das lesen von normalen Konsoleneingaben gedacht ist.
In dem Beispiel kannst du einfach sehen, dass, fals der Nutzer etwas falsches eingibt, eine Exception geschmissen wird, und diese dann dazu führt, dass eine Meldung über die falsche Eingabe erfolgt.

Ich bin einfach mal davon ausgegangen, dass du mit Exceptions schon ein wenig anfangen kannst.
 
fishhunter schrieb:
Ich habe es wie du mir schon ratest immer mit Punkt eingegeben. Da funktioniert es nicht! Aber wenn ich es mit Komma eingebe funktioniert es!
Das ist seltsam.

Der Scanner benutzt die lokal übliche Form von Dezimaltrennzeichen automatisch soweit ich weiß. Deshalb bekommst du eine Exception, wenn du statt des Kommas einen Punkt verwendest:

Localized numbers

An instance of this class is capable of scanning numbers in the standard formats as well as in the formats of the scanner's locale. A scanner's initial locale is the value returned by the Locale.getDefault() method; it may be changed via the useLocale(java.util.Locale) method.
Quelle: Java API
 
Zurück
Oben