[JAVA] Problem...

  • Hallöchen..
    Also für eine Schulaufgabe soll ich die Klasse Vertreter erstellen & anschließend einen Vertreter erstellen in der Startklasse..


    Nun möchte ich mit der Methode "berechneProvision"
    die Provision eines Vertreters berechnen.
    private double provision;


    public double berechneProvision(double provision){
    return this.umsatz * this.newProvisionssatz / 100;
    }


    public double getProvision(){
    return this.provision;
    }


    ich habe einen ausgangs Provisionssatz, der sich allerdings abhängig vom Umsatz ändert. Und den "neuen" Provisionssatz (newProvisionssatz) bestimmte ich so:
    private double newProvisionssatz;
    public void ermittleProvisionssatz(double newProvisionssatz)
    {
    if (this.umsatz >= 20000)
    {
    newProvisionssatz = Vertretter.provisionssatz + 10;
    }


    else
    {
    if (this.umsatz >= 10000) {
    newProvisionssatz = Vertretter.provisionssatz + 5;
    }
    else


    {newProvisionssatz = Vertretter.provisionssatz;
    }
    }
    }


    Problem: Wenn ich wie oben erwähnt, die Provision so ausrechne:
    return this.umsatz * this.newProvisionssatz / 100;
    zeigt er mir 0 an...


    Muss ich newProvisionssatz als einen Parameter oder irgendwie so zwischenzeitlich abspeichern?


    Lg... ._.



    //Edit:
    Gesamter Code:
    Klasse Vertretter:

    Spoiler anzeigen
    package Packet_Provision;

    Spoiler anzeigen
    public class Vertretter {



    private String name;

    Spoiler anzeigen
    public String getName() {
    return name;
    }


    public void setName(String name) {
    this.name = name;
    }

    Spoiler anzeigen
    private double umsatz;

    Spoiler anzeigen
    public double getUmsatz() {
    return umsatz;
    }

    public void setUmsatz(double umsatz) {
    this.umsatz = umsatz;
    }

    Spoiler anzeigen
    private static double festgehalt;

    public static double getFestgehalt() {
    return festgehalt;
    }

    Spoiler anzeigen
    public static void setFestgehalt(double festgehalt) {
    Vertretter.festgehalt = festgehalt;
    }

    private static double provisionssatz;

    Spoiler anzeigen
    public double getProvisionssatz() {
    return provisionssatz;
    }

    public static void setProvisionssatz(double provisionssatz) {
    Vertretter.provisionssatz = provisionssatz;
    }

    private double newProvisionssatz;
    public void ermittleProvisionssatz(double newProvisionssatz)
    {
    if (this.umsatz >= 20000)
    {
    newProvisionssatz = Vertretter.provisionssatz + 10;
    }

    else
    {
    if (this.umsatz >= 10000) {
    newProvisionssatz = Vertretter.provisionssatz + 5;
    }
    else

    {newProvisionssatz = Vertretter.provisionssatz;
    }
    }
    }

    Spoiler anzeigen
    private double provision;

    public double berechneProvision(double provision){
    return this.umsatz * this.newProvisionssatz / 100;
    }

    Spoiler anzeigen
    public double getProvision(){
    return this.provision;
    }

    public void berechneGesamtgehalt(double gesamtgehalt) {
    gesamtgehalt = Vertretter.festgehalt + this.provision;
    }

    }


    Startklasse:

    Spoiler anzeigen
    package Packet_Provision;

    Spoiler anzeigen
    public class Startklasse {

    Spoiler anzeigen
    private static double provision;

    Spoiler anzeigen
    public static void main(String[] args) {
    // TODO Auto-generated method stub

    Vertretter.setFestgehalt(2000);



    Vertretter p1;
    p1 = new Vertretter();
    p1.setName("Hans");
    p1.setUmsatz(50000);


    System.out.println("Vertreter:" + p1.getName());
    System.out.println("Umsatz:" + p1.getUmsatz());
    System.out.println("Provision:" + p1.berechneProvision(provision));

    2 Mal editiert, zuletzt von KomA ()

  • private static double provision;
    [...]
    System.out.println("Provision:" + p1.berechneProvision(provision));


    Irgendwie ist das doch merkwürdig, du gibst keinen Wert(0) an und erwartest dann das da etwas über 0 rauskommt.


    0 * 0 = 0

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Das Problem ist eher, dass "newProvisionssatz" in der Methode "berechneProvision" 0 ist (Umsatz * 0 = 0 (siehe BlackAce)).


    Der Parameter "provision" in der Methode "berechneProvision" wird nicht benutzt.
    Nirgendwo wird in der "Startklasse" eine Provision festgelegt.
    In der Methode "ermittleProvisionsatz" wird der Parameter überschrieben, was keinen Sinn macht.


    Auch bei der Methode um das Gesamtgehalt zu berechnen benutzt du das private Attribut "provision", welches nirgendwo festgelegt wird.


    // edit: Umsatz Multiplikation hinzugefügt

  • Also den newProvisionssatz bestimmte ich ja so, während ich in der Startklasse dem neuen Objekt den Umsatz zuvor zuweise
    p1.setUmsatz(50000);
    Vertretter.setProvisionssatz(10);

    Spoiler anzeigen
    private double newProvisionssatz;

    public double getNewProv()
    {
    return this.newProvisionssatz;
    }

    public void ermittleNewProv(double newProvisionssatz)
    {
    if (this.umsatz >= 20000)
    {
    this.newProvisionssatz = Vertretter.provisionssatz + 10;
    }

    else
    {
    if (this.umsatz >= 10000)
    {
    this.newProvisionssatz = Vertretter.provisionssatz + 5;
    }
    else
    {
    this.newProvisionssatz = Vertretter.provisionssatz;
    }
    }
    }


    nur speichert er mir den newProvisionssatz nicht richtig ab..


    hab mir nämlich denn ma printen lassen und er sagt mir 0.. obwohl umsatz>20000 ist.. sollte er mir ja 20 anzeigen (alter Provisionssatz + 10= 10+10 = 20)


    Wo steckt hier der Fehler? :/

  • Kannst du nochmal eine vollständige Version zeigen? Das aus dem Startpost ist ja jetzt anders als das was du jetzt geschrieben hast :D


    Außerdem könntest du uns die Aufgabenstellung mal nennen, da ich den Sinn der "neuen" Provision noch nicht ganz verstehe


    //edit: Frage nach Aufgabenstellung

  • Ok hab nochmal alles neu gemacht...


    Habe in der Startklasse wohl vergessen den neuen Provisionssatz zuerst ausrechnen zu lassen...
    Dachte wenn ich einfach die Provision berechne (wo ja der neue Provisionssatz benötigt wird), ermittelt er automatisch zuerst den neuen...


    Danke für eure Hilfe ^^


    //Edit: Hat bisschen gedauert was ihr die ganze zeit mit 0 meint.. war eben der Meinung "In der Klasse Vertretter hat er doch den Befehl seinen neuen Satz zu berechnen... wieso soll da 0 rauskommen?"


    //Edit²: Also hab mir desweiteren mal eine Struktur angewohnt..
    Vertretter:

    Spoiler anzeigen
    package Packet_Provision;

    Spoiler anzeigen
    public class Vertretter {

    Spoiler anzeigen
    private String name;
    private double umsatz;
    private double festgehalt;
    private double provisionssatz;
    private double provision;
    private double newProvisionssatz;
    private double gesamtgehalt;

    public Vertretter()
    {
    festgehalt = 2000;
    provisionssatz = 10;
    }

    //Name
    public void setName(String name)
    {
    this.name = name;
    }

    public String getName()
    {
    return name;
    }

    //Umsatz

    public void setUmsatz(double umsatz)
    {
    this.umsatz = umsatz;
    }

    public double getUmsatz()
    {
    return umsatz;
    }

    //Festgehalt

    public void setFestgehalt(double festgehalt)
    {
    this.festgehalt = festgehalt;
    }

    public double getFestgehalt()
    {
    return this.festgehalt;
    }

    //Provisionssatz

    public void setProvisionssatz(double provisionssatz)
    {
    this.provisionssatz = provisionssatz;
    }

    public double getProvisionssatz()
    {
    return provisionssatz;
    }

    //Neuer Provisionssatz
    public void ermittleProvisionssatz()
    {
    if (this.umsatz >= 20000) {
    this.newProvisionssatz = provisionssatz + 10;
    } else {
    if (this.umsatz >= 10000) {
    this.newProvisionssatz = provisionssatz + 5;
    } else {
    this.newProvisionssatz = provisionssatz;
    }
    }
    }

    public double getNewProvisionssatz()
    {
    return this.newProvisionssatz;
    }

    //Provision berechnen

    public void berechneProvision()
    {
    this.provision = this.umsatz * this.newProvisionssatz / 100;
    }

    public double getProvision()
    {
    return provision;
    }

    //Gesamtgehalt
    public void berechneGesamtgehalt()
    {
    this.gesamtgehalt = this.festgehalt + this.provision;
    }

    public double getGesamtgehalt()
    {
    return this.gesamtgehalt;
    }
    }


    Startklasse:

    Spoiler anzeigen
    package Packet_Provision;

    Spoiler anzeigen
    public class Startklasse {

    Spoiler anzeigen
    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub

    Spoiler anzeigen
    Vertretter v1 = new Vertretter();

    v1.setName("Udo");
    v1.setUmsatz(22250);
    v1.ermittleProvisionssatz();
    v1.berechneProvision();
    v1.berechneGesamtgehalt();

    //Printen
    System.out.println("Vertreter:" + v1.getName());
    System.out.println("Umsatz:" + v1.getUmsatz());
    System.out.println(v1.getNewProvisionssatz() + "% Provision:" + v1.getProvision());
    System.out.println("Gesamtgehalt:" + v1.getGesamtgehalt());
    }
    }

    Einmal editiert, zuletzt von KomA ()