Zum Inhalt springen
  • 0

Preis berechnen


Frage

Geschrieben (bearbeitet)

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: 5
Bitte geben Sie den Preis an: 4.26
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 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 von antenne

12 Antworten auf diese Frage

Empfohlene Beiträge

  • 1
Geschrieben

achja zum Abschluss natürlich noch das fertige und wunderbar funktionierende Programm :D

                                                                                                                                                  

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);
        }}}

  • 0
Geschrieben

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.

 

  • 0
Geschrieben (bearbeitet)

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 von antenne
  • 0
Geschrieben

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.

 

  • 0
Geschrieben

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.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Diese Frage beantworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...