Jump to content

Frage

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

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

12 Antworten auf diese Frage

Empfohlene Beiträge

  • 1

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

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
  • 0

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.

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
  • 0

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

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
  • 0

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.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Gast
Diese Frage beantworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

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

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

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


Fachinformatiker.de, 2019 SE Internet Services

fidelogo_small.png

if_icon-6-mail-envelope-closed_314900.pnSchicken Sie uns eine Nachricht!

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

Fachinformatiker.de App


Get it on Google Play

Kontakt

Hier werben?
Oder senden Sie eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...

Wichtige Information

Fachinformatiker.de verwendet Cookies. Mehr dazu in unserer Datenschutzerklärung