# drei objekte um 1 Wert erhöhen



## spitzname (19. Apr 2010)

```
//sämtliche Klassen des Pakets "util" importieren
import java.util.*;

 public class Main{

        //Atributendeklaration
        private double rabatt;

        //Scanner mit Objekt s initialisieren
        Scanner s = new Scanner(System.in);
        //Arrays mit drei Objekten von Classe Auftrag erzeugen
        Auftrag[] a = new Auftrag[3];

        //liest alle benötigten Daten für die Aufträge ein
        public static void main(String[] args)
       {
             //for Schleife initialisiert drei verschiedene Objekte
             //von Classe Auftragsverwaltung mit Werten
             for (int i = 0;i<3;i++)
             {
            a[i]=new Auftrag();

            //Auftragsdaten werden eingegeben
              System.out.println("geben Sie bitte folgende Daten ein:");
              System.out.print("Rabatt:");
              double rab = s.nextDouble();
              a[i].setRabatt(rab);
              
        }// ende forschleife

     }//ende main



//zugriff auf Rabatt um änderungen vornehnmen zukönnen mit get, set
    double getRabatt()
    {
        return rabatt;
    }

    void setRabatt(double neuerRabatt)
    {
        rabatt = neuerRabatt;
    }


    //erhöht den Rabatt von allen Aufträgen um Prozent Prozent
    void erhoeheRabatt(double Prozent)
    {
                        

            
    }

}//ende class
```



Hallo, wie kann man diese Methode: 

//erhöht den Rabatt von allen Objekten um Prozent Prozent
    void erhoeheRabatt(double Prozent)
    {
    }

 füllen, damit der Rabatt von jedem Objekt erhöht wird?


würde mich über Tipps freuen
gruß spitzname


----------



## Landei (19. Apr 2010)

```
void erhoeheRabatt(double prozent) {
   rabatt *= (1 + prozent/100);
}
```


----------



## Final_Striker (19. Apr 2010)

Du läufst mit einer for-Schleife über das Autrag-Array und setzt Rabatt gleich alter Wert + Änderung.


----------



## Gast2 (19. Apr 2010)

Die Methoden erhoeheRabatt und setRabatt  sowie die Variable rabatt müssten auch noch in die Klasse Auftrag wenn ich das richtig sehe


----------



## spitzname (19. Apr 2010)

Das hört sich gut an.



Final_Striker hat gesagt.:


> Du läufst mit einer for-Schleife über das Autrag-Array und setzt Rabatt gleich alter Wert + Änderung.



Ich kann diesen Tipp aber leider nicht in code umsetzen, wäre nett wenn ich noch einwenig Hilfe bekommen würde.


gruß spitzname


----------



## Final_Striker (19. Apr 2010)

woran hängt es genau?


----------



## spitzname (19. Apr 2010)

Also ich bin noch Anfänger in Java und deswegen verstehe ich nicht ganz, meinst das so: 


```
void erhoeheRabatt(double Prozent)
     {
        for (int i = 0;i<3;i++)
        {
          a[i]=new Auftrag();
          System.out.print("Rabatt:");
          double rab = s.nextDouble();
          a[i].setRabatt(rab);
          Prozent = getRabatt() +1;
         }
      }
```


----------



## Final_Striker (19. Apr 2010)

Du brauchst nichts einzulesen. Der Prozent-Wert wird der Funktion schon per Parameter "Prozent" übergeben.

Der neue Rabattwert setzt sich dann aus dem alten Wert + x% alten Wertes zusammen.


----------



## spitzname (21. Apr 2010)

Hallo und danke für die Tipps, ich meine diesmal alles berücksichtigt zuhaben aber es klappt trotzdem nicht mit der Methode "void erhoeheRabatt(double[] Prozent)" jeden Rabatt um ein prozent zuerhöhen ?

In dem Beispiel sind insgesamt drei Classen (main, Auftragsverwaltung, Auftrag)

Hoffe auf Tipps wo mein Fehler ligen könnte:

gruss spitzname


```
public class Main {

    
    public static void main(String[] args) {

        

        Scanner s = new Scanner(System.in);
        Auftragsverwaltung ka = new Auftragsverwaltung();
        
        ka.daten_Einlesen();
        System.out.println("Rabatt wurde bei allen Aufträgen um ein Prozent erhoeht");
        double[] Prozent = new double[3];
        ka.erhoeheRabatt(Prozent);
  }//ende main
}//ende class


import java.util.*;

public class Auftragsverwaltung extends Auftrag
{

     //Scanner mit Objekt s initialisieren
     Scanner s = new Scanner(System.in);
     //Arrays mit drei Objekten von Classe Auftrag erzeugen
     Auftrag[] a = new Auftrag[3];

     //liest alle benötigten Daten für die Aufträge ein
     void daten_Einlesen()
     {
        //for Schleife initialisiert drei verschiedene Objekte
        //von Classe Auftragsverwaltung mit Werten
        for (int i = 0;i<3;i++)
        {
          a[i]=new Auftrag();

//        Auftragsdaten werden eingegeben
          System.out.println("geben Sie bitte folgende Daten ein:");
          System.out.print("Rabatt:");
          double rab = s.nextDouble();
          a[i].setRabatt(rab);
  }// ende forschleife
     }//ende void daten einlesen

  void erhoeheRabatt(double[] Prozent)
     {
        for (int i=0; i<3; i++)
        {
        Prozent[i]=a[i].getRabatt();
        Prozent[i]++;
        }
     }
}//ende class


public class Auftrag {

       private double rabatt;

//zugriff auf Rabatt um änderungen vornehnmen zukönnen mit get, set
    double getRabatt()
    {
        
        return rabatt;
    }

    void setRabatt(double neuerRabatt)
    {
        rabatt = neuerRabatt;
    }

}// ende class
```


----------



## w0ddes (21. Apr 2010)

Sollst/Willst du den Rabatt um 1% oder um 1 Prozentpunkt erhöhen?! 

Und wie wird der Rabatt gespeichert?!  für 50% z.B.:  rabatt = 50  oder rabatt = 0,5 ??


----------



## spitzname (21. Apr 2010)

Rabatt soll um ein Prozentpunkt erhöht werden also 11% +1% = 12% und die Prozente werden so gespeichert z.B. --> rabatt = 10.


gruss spitzname


----------



## Michael... (21. Apr 2010)

Warum erbt Auftragsverwaltung von Auftrag? Auftragsverwaltung ist doch kein Auftrag, mit der Klasse sollen die Aufträge nur verwaltet werden.

Diese Methode ist völliger Käse ;-) hier übergibst Du ein Werte Array und veränderst die übergebenen Werte. Du willst doch das Attribut rabatt in den Aufträgen anpassen...


spitzname hat gesagt.:


> [JAVA=46]  void erhoeheRabatt(double[] Prozent)
> {
> for (int i=0; i<3; i++)
> {
> ...


_
und das geht momentan nur mit setRabat(double neuerRabatt).
Entweder Du verpasst der Klasse Auftrag eine Methode ala erhoeheRabatt(double rabattErhoehung) und machst darin die Erhöhung oder Du machst in der Auftragsverwaltung sowas wie


		Code:In die Zwischenablage kopieren


auftrag.setRabatt(auftrag.getRabatt() + erhoehung);

_


----------



## spitzname (21. Apr 2010)

Michael... hat gesagt.:


> Warum erbt Auftragsverwaltung von Auftrag? Auftragsverwaltung ist doch kein Auftrag, mit der Klasse sollen die Aufträge nur verwaltet werden.
> 
> Diese Methode ist völliger Käse ;-) hier übergibst Du ein Werte Array und veränderst die übergebenen Werte. Du willst doch das Attribut rabatt in den Aufträgen anpassen...
> 
> ...



Das ist eine gute Idee aber bei mir klappt es trotzdem noch nicht ganz, die Werte werden zwar verändert aber nicht so wie es sein muss, was ist falsch ?

in main -->

```
System.out.println("Rabatt wurde bei allen Aufträgen " +
                            "um ein Prozent erhoeht");
                    double Prozent = ka.getRabatt();
                    ka.erhoeheRabatt(Prozent);
```

in Auftragsverwaltung -->

```
void erhoeheRabatt(double Prozent)
     {
        for (int i=0; i<3; i++)
        {
       a[i].setRabatt(Prozent++);
        }
     }
```


----------



## spitzname (21. Apr 2010)

Jetzt habe ich es, danke für den super Tipp!!!!!!!!!!!!
:toll::toll::toll::toll:

```
void erhoeheRabatt(double Prozent)
     {
        for (int i=0; i<3; i++)
        {
       a[i].setRabatt(a[i].getRabatt()+1);
        }
     }
```

gruß spitzname


----------



## w0ddes (21. Apr 2010)

Jetzt schau ich wieder rein und merke: Ich hatte genau den richtigen Tipp für ihn (den ich durch die Fragen nochma absichern wollte) aber bin zu spät


----------



## Michael... (21. Apr 2010)

spitzname hat gesagt.:


> Jetzt habe ich es


Fast;-) nur noch den Übergabeparameter *double Prozent*noch aus dem Methodenkopf rausschmeissen, denn den brauchst Du ja nicht


----------

