Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

Gelöst von antenne

Zur Lösung

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.

 

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

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.

 

  • 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.

  • Autor
  • Lösung

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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.