Veröffentlicht 16. Oktober 20159 j Hallo Leute. Da mir hier letztes mal schon so super geholfen wurde, würde ich gern wieder um Rat bitten. Ich wollte als abosluter Java neuling, mal ein kleines Programm schreiben, wo ich den Preis eines Produktes berechnen kann. Mit Rabatt, Skonto usw. Hier erstmal der Quellcode:import java.util.Scanner;public class RabattBerechnen { private static Scanner s; public static void main(String[] args) { s = new Scanner(System.in); int ja = 0; double p,r,m,vk,fr, fp,fsk,sk; { System.out.print("Bitte geben Sie die Menge an: ");m = s.nextDouble();System.out.print("Bitte geben Sie den Preis an: ");p = s.nextDouble();System.out.print("Bitte geben Sie den Rabatt an: ");r = s.nextDouble();System.out.println("Bekommen Sie Skonto? ");sk=s.nextDouble();{ fr = p*r/100; if (sk == ja){ fsk = fr*sk;} else fsk =fr;}System.out.print("Bitte geben Sie die Versandkosten ein: ");vk = s.nextInt();System.out.println("Der Endpreis wird berechnet...");fr = p*r/100;fsk = fr*sk;fp = m*fsk+vk;System.out.println("Der Preis inklusive Versandkosten beträgt "+fp); }}}Ich kann Menge und Preis eingeben, danach kommt dieser Fehler: Bitte geben Sie die Menge an: 5Bitte geben Sie den Preis an: 4.26Exception 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 RabattBerechnen.main(RabattBerechnen.java:18) ich hatte auch s.nextInt(); probiert aber funktioniert genauso wenig. Könnte mir wer einen Tip geben warum er meckert? Fehler werden keine angezeigt in eclipse. Vielen Dank schonmal! edit: Wenn ich bei Preis eine glatte Zahl also zb. 5 eingebe geht es sogar weiter bis Rabatt. auch da kommt der Fehler nur wenn ich Kommazahlen verwende, aber spätestens dann bei der Skonto abfrage bekomme ich wieder den Fehler egal was ich da eingebe. Bearbeitet 16. Oktober 20159 j von antenne
16. Oktober 20159 j Ich hab das grade mal durchgespielt.Diese Exception kommt wenn du dem Scanner einen Datentyp übergist den er nicht erwartet.Also bitte bei allem auch ein Double angeben außer bei den Versandkosten.Dann funktioniert es.
16. Oktober 20159 j Autor Ich hab das grade mal durchgespielt.Diese Exception kommt wenn du dem Scanner einen Datentyp übergist den er nicht erwartet.Also bitte bei allem auch ein Double angeben außer bei den Versandkosten.Dann funktioniert es. Verstehe ich leider nicht ganz. Habe doch überall double. und habe mal int vk; gemacht und bei double rausgenommen. Der Fehler kommt aber trotzdem sobald ich ne kommazahl verwende. Und warum eigentlich kein double bei Versandkosten? Da sind doch auch meistens Zahlen mit Komma dabei. edit: darauf muss man auch erstmal kommen... Ich war gewohnt bei Programmiersprachen Zahlen mit . statt , zu schreiben. Wenn ich jetzt Zahlen mit Komma schreibe funktioniert es. Nur die Skontoabfrage funktioniert weiterhin nicht Bearbeitet 16. Oktober 20159 j von antenne
16. Oktober 20159 j ok, also schonmal einen Schritt weiter. der Scanner von deinem Skonto verlangt auch ein double. Du kannst also nicht einfach "ja" schreiben. Das wäre dann ein String.
16. Oktober 20159 j Autor ich schreibe jetzt nochmal das komplette programm der Übersichtlichkeit halber: import java.util.Scanner;public class RabattBerechnen { private static Scanner s; public static void main(String[] args) { s = new Scanner(System.in); IOException(); String sk; double p,r,m,fr, fp,vk,fsk; { System.out.print("Bitte geben Sie die Menge an: ");m = s.nextDouble();System.out.print("Bitte geben Sie den Preis an: ");p = s.nextDouble();System.out.print("Bitte geben Sie den Rabatt an: ");r = s.nextDouble();System.out.println("Bekommen Sie Skonto? ");sk=s.nextLine();{ fr = p*r/100; double skj; skj= fr*0.98; if (sk.equals("ja")) fsk = skj; else fsk=fr;}System.out.print("Bitte geben Sie die Versandkosten ein: ");vk = s.nextInt();System.out.println("Der Endpreis wird berechnet...");fr = m*p*r/100;fp = m*fsk+vk;fp=m*p-fr+vk;System.out.println("Der Preis inklusive Versandkosten beträgt "+fp); } } private static void IOException() { }} das alles funktioniert soweit ganz gut. Neues Problem hier ist, dass das Programm fragt :"Bekommen Sie Skonto?" aber gar nicht auf die Eingabe wartet sondern direkt die nächste Zeile ausgibt :"Bitte geben Sie die Versandkosten an". Ich kann also gar nicht ja schreiben.
16. Oktober 20159 j Autor versuchs mal mit s.next();bist mein Held des Tages für was ist dann s.nextLine()?
16. Oktober 20159 j Ich hab das mal verschoben, damit wir in der Ecke endlich mal einen Eintrag haben @antenne ; Bitte die hilfreichste Antwort markieren. Danke dir!
16. Oktober 20159 j s.nextline() würdest du zum Beispiel benutzen, wenn du ein File Zeile für Zeile auslesen möchtest.Es gibt die nächste Zeile zurück.
16. Oktober 20159 j Autor Ich hab das mal verschoben, damit wir in der Ecke endlich mal einen Eintrag haben @antenne ; Bitte die hilfreichste Antwort markieren. Danke dir!markieren mit dem button : gefällt mir? oder wie?
16. Oktober 20159 j Autor Lösung achja zum Abschluss natürlich noch das fertige und wunderbar funktionierende Programm import java.util.Scanner;public class RabattBerechnen { private static Scanner s; public static void main(String[] args) { s = new Scanner(System.in); String sk; double p,r,m,fr, fp,vk; { System.out.print("Bitte geben Sie die Menge an: ");m = s.nextDouble();System.out.print("Bitte geben Sie den Preis an: ");p = s.nextDouble();System.out.print("Bitte geben Sie den Rabatt an: ");r = s.nextDouble();System.out.print("Bekommen Sie Skonto? ");sk = s.next();System.out.print("Bitte geben Sie die Versandkosten ein: ");vk = s.nextDouble();System.out.println("Der Endpreis wird berechnet..."); fr =m* p*r/100; if (sk.equals("ja")) fp= (m*p-fr)*0.98+vk; else fp=(m*p)-fr+vk;System.out.println("Der Preis inklusive Versandkosten beträgt "+fp); }}}
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.