Java Rabatt berechnen

  • Themenstarter Themenstarter Gelöschtes Mitglied 65664
  • Beginndatum Beginndatum
G

Gelöschtes Mitglied 65664

Gast
Hallo zusammen,
Ich bin gerade dabei, Java so zu programmieren, dass es Rabatt berechnet. Jedoch wird mein "-" nicht erkannt und so auch nicht der Endbetrag angezeigt. (Z. 12)
Was mache ich falsch?

Java:
import java.util.Scanner;
  public class Rabatt {
      public static void main(String[] args) {
        System.out.print("Geben Sie den Gesamtbetrag ein");
        Scanner eingabe = new Scanner(System.in);
        int Betrag = eingabe.nextInt();
      
         if(Betrag > 100){
            System.out.println(" Rabatt " + (int)(Betrag * 0.05));
             }
        else{
        System.out.println(" Zahlen Sie "+ Betrag -(Betrag * 0.05));
        }

             if(Betrag > 500){
            System.out.println(" Rabatt " + (int)(Betrag * 0.1));
          
             }
        else{
             System.out.println(" Zahlen Sie "+ Betrag);
        }
        }
        }
 
Das liegt daran, dass in Java sowohl der '+' als auch der '-' Operator linksassoziativ sind. Der Java Parser denkt also, dass du String - double rechnen willst, was nicht geht. Du musst einfach die Rechnung klammern:
Java:
import java.util.Scanner;
  public class Rabatt {
      public static void main(String[] args) {
        System.out.print("Geben Sie den Gesamtbetrag ein");
        Scanner eingabe =                                                                   new Scanner(
System.in)



;
        int
   Betrag = eingabe.nextInt();
    
         if
(Betrag > 100)  
       
       
         {
         
           
            System.out.println(" Rabatt " + (int)(Betrag * 0.05));
             }
                                          else{
        
        
  System.out.println(" Zahlen Sie "+ (Betrag -(Betrag * 0.05)));
}

                      if(Betrag
   > 500)

{
            System.out.println(" Rabatt " + (int)(Betrag * 0.1));
        
             }
        else{
             System.out.println(" Zahlen Sie "+ Betrag);
        }
           }
               }
(Leute... nutzt doch bitte einfach immer eine Java IDE (Integrated Development Environment - integrierte Entwicklungsumgebung) und den darin enthaltenen Source Code Formatter, bevor ihr euren Sourcecode hier postet)
 
Alternativ geht auch: https://codebeautify.org/

Java:
import java.util.Scanner;
public class Rabatt {
  public static void main(String[] args) {
    System.out.print("Geben Sie den Gesamtbetrag ein");
    Scanner eingabe = new Scanner(System. in );
    int Betrag = eingabe.nextInt();

    if (Betrag > 100) {
      System.out.println(" Rabatt " + (int)(Betrag * 0.05));
    }
    else {
      System.out.println(" Zahlen Sie " + Betrag - (Betrag * 0.05));
    }

    if (Betrag > 500) {
      System.out.println(" Rabatt " + (int)(Betrag * 0.1));

    }
    else {
      System.out.println(" Zahlen Sie " + Betrag);
    }
  }
}
 
Das liegt daran, dass in Java sowohl der '+' als auch der '-' Operator linksassoziativ sind. Der Java Parser denkt also, dass du String - double rechnen willst, was nicht geht. Du musst einfach die Rechnung klammern:
Java:
import java.util.Scanner;
  public class Rabatt {
      public static void main(String[] args) {
        System.out.print("Geben Sie den Gesamtbetrag ein");
        Scanner eingabe =                                                                   new Scanner(
System.in)



;
        int
   Betrag = eingabe.nextInt();
   
         if
(Betrag > 100) 
      
      
         {
        
          
            System.out.println(" Rabatt " + (int)(Betrag * 0.05));
             }
                                          else{
       
       
  System.out.println(" Zahlen Sie "+ (Betrag -(Betrag * 0.05)));
}

                      if(Betrag
   > 500)

{
            System.out.println(" Rabatt " + (int)(Betrag * 0.1));
       
             }
        else{
             System.out.println(" Zahlen Sie "+ Betrag);
        }
           }
               }
(Leute... nutzt doch bitte einfach immer eine Java IDE (Integrated Development Environment - integrierte Entwicklungsumgebung) und den darin enthaltenen Source Code Formatter, bevor ihr euren Sourcecode hier postet)
Dankeschön!
Der Fehler ist zwar weg, aber das, was ich eigentlich erreichen möchte, klappt nicht.
Ich probiere es z.B. mit 120. Das wäre ein Rabatt (5%) von 6 und das Endergebnis 114, aber trotzdem steht dort "Zahlen Sie 120"... Anscheinend rechnet Java es nicht.
 
Kannst du bitte nochmal genau beschreiben, was du vor hast, gerne auch mit Beispielen?
Klar, gerne 🙂

Als erstes soll das Programm fragen, wie viel gezahlt werden muss. Dann gibt man z.B. ein 120(€). Von diesem Preis sollen 5% abgezogen werden. Das wären dann in dem Fall -6(€) als Rabatt. Dies soll auch angezeigt werden. Zum Schluss soll dann noch der wirkliche Betrag ausgerechnet werden. Also 114(€), die am Ende mit Rabatt gezahlt werden müssen.



Ab 500(€) gibt es 10%

Ab 100(€) gibt es 5%



Ich hoffe es ist verständlich geworden.
 
Ich hoffe es ist verständlich geworden.
Ja ist es 😉

Java:
import java.util.Scanner;

public class Rabatt {
    public static void main(String[] args) {
        System.out.println("Geben Sie den Gesamtbetrag ein:");
        Scanner eingabe = new Scanner(System.in);
        int betrag = eingabe.nextInt();
        int betragNachRabatt = betrag;

        if (betrag < 100) {
            System.out.println("Es gibt leider keinen Rabatt.");
        } else if (betrag < 500) {
            betragNachRabatt *= 0.95; // verwende ggfs. Math.round ...
            System.out.println("Es gibt einen 5% Rabatt von " + (betrag - betragNachRabatt) + ".");
        } else {
            betragNachRabatt *= 0.90; // verwende ggfs. Math.round ...
            System.out.println("Es gibt einen 10% Rabatt von " + (betrag - betragNachRabatt) + ".");
        }

        System.out.println("Gesamtbetrag nach Rabatt: " + betragNachRabatt);
    }
}
 
Ja ist es 😉

Java:
import java.util.Scanner;

public class Rabatt {
    public static void main(String[] args) {
        System.out.println("Geben Sie den Gesamtbetrag ein:");
        Scanner eingabe = new Scanner(System.in);
        int betrag = eingabe.nextInt();
        int betragNachRabatt = betrag;

        if (betrag < 100) {
            System.out.println("Es gibt leider keinen Rabatt.");
        } else if (betrag < 500) {
            betragNachRabatt *= 0.95; // verwende ggfs. Math.round ...
            System.out.println("Es gibt einen 5% Rabatt von " + (betrag - betragNachRabatt) + ".");
        } else {
            betragNachRabatt *= 0.90; // verwende ggfs. Math.round ...
            System.out.println("Es gibt einen 10% Rabatt von " + (betrag - betragNachRabatt) + ".");
        }

        System.out.println("Gesamtbetrag nach Rabatt: " + betragNachRabatt);
    }
}
Es klappt!! Vielen vielen Dank 🙂
 

Zurück
Oben