Summieren aller Geschenke vom Typ Geschenk?

Funktionierdochmal

Bekanntes Mitglied
Java:
public class Schlitten extends WeihnachtsObjekt {
   
    private Rentier[] rentiere;
    private Geschenk[] geschenke;


    public Schlitten(Rentier[] rentiere, Geschenk[] geschenke) {
       this.rentiere = rentiere;
       this.geschenke = geschenke;
       
    }

               
    public Geschenk getNaechstesGeschenk () {
        Geschenk[] temp = new Geschenk[this.geschenke.length];
       
        temp[0] = this.geschenke[0];
       
        for(int i = 1; i < temp.length; i++) {
            temp[i] = this.geschenke[i];
        }
        for(int i = 0; i < temp.length; i++) {
            this.geschenke[i] = temp[i];
        }
       
        return temp[0];
    }
    // DIESEN TEIL BEACHTEN BITTE
    public int getGewicht(Geschenk[] geschenke) {
        int gGewicht = 0;
        for(int i = 0; i < this.geschenke.length; i++) {
            gGewicht += this.geschenke[i];
        }
        return gGewicht;
     
    }
Moin Leute, ich habe eine Methode, die ein gesamtes geschenke-array aufsummiert. Jedes mal, wenn ein Geschenk ein Geschenk erstellt wird, wird ihm ein zufälliges Gewicht zugewiesen. Das Problem ist aber, dass meine Methode getGewicht den Fehler aufweist, dass this.geschenke ja den Datentyp "Geschenk" hat und nicht int. Wie kann ich den Inhalt des Arrays aufsummieren, wenn der Datentyp Geschenk ist?
 

httpdigest

Top Contributor
`this.geschenke[ i ].getGewicht()`

Außerdem machen viele deiner Methoden keinen Sinn. Warum bekommt denn bitte die Methode zum Berechnen der Gewichte ein Geschenk[] Array als Parameter?? Es hat doch die Geschenke bereits als Instanzvariable.

Du sollst sicherlich die in der Oberklasse deklarierte getGewicht() Methode überschreiben.
 

Blender3D

Top Contributor
// DIESEN TEIL BEACHTEN BITTE
public int getGewicht(Geschenk[] geschenke) {
int gGewicht = 0;
for(int i = 0; i < this.geschenke.length; i++) {
gGewicht += this.geschenke[i];
}
return gGewicht;

}
Deine Klasse Geschenk sollte eine getterMethode vom Type int haben.
Java:
gGewicht += this.geschenke[i].getGewicht();
PS. Das Feld geschenke als Übergabeparameter ist überflüssig.
 

Funktionierdochmal

Bekanntes Mitglied
Ja stimmt. Mit getGewicht überschreibt er die Methode der Oberklasse
Java:
    public int getGewicht() {
        return 0;
    }

Wenn ich jetzt aber bei der Erstellung eines neuen Geschenks in der Hauptklasse (Weihnachten) einen zufälligen Wert bekomme für das Geschenk, inwiefern betzieht sich das getGewicht dann tatsächlich auf das Gewicht meines Geschenkes? Könnt ihr mir den Zusammenhang etwas erklären? (Frage vor allem an httpdigest gerichtet, der hat mir bei der Aufgabe schon zig male geholfen lol)
 

httpdigest

Top Contributor
Implementiere es einfach so, und es wird korrekt funktionieren:
Java:
public int getGewicht() {
  int gGewicht = 0;
  for(int i = 0; i < this.geschenke.length; i++) {
    gGewicht += this.geschenke[i].getGewicht();
  }
  return gGewicht;
}
Grund: Polymorphie bzw. Dynamic dispatch
 

Blender3D

Top Contributor
Beim erstellen einer Instanz vom Typ Geschenk, bekommt dieses ein Gewicht zugewiesen.
Wenn Du mehre Geschenke erstellst, dann hat jedes sein individuelles Gewicht. Durch die Methode getGewicht() kann das Gewicht für jedes einzelne Geschenk von außen ermittelt werden.
 

Funktionierdochmal

Bekanntes Mitglied
httpdigest ich lese mir deine Antworten immer gründlich und schaue auch in den Folien nach, aber ich stoße immer auf weitere Fehler zu, für die ich einfach keine Lösung finde...
Java:
package de.weihnachten;
import de.weihnachten.Schlitten;

public class Weihnachtsmann extends WeihnachtsObjekt {
    private double futtervorrat;
   
   
    public Weihnachtsmann(double futtervorrat, Schlitten[] schlitten) {
        this.futtervorrat = futtervorrat;
    }
   
    public boolean istFertig() {
        boolean geschenkeAusgeliefert = false;
        if(istLeer() == true) {
           return true;
        } else {
            return false;
        }
    }
Wie hier beispielsweise: Ich möchte von dieser Klasse auf die eben gezeigte Klasse Schlitten zugreifen. Dort gibt es die Methode istLeer(). Wieso findet er jetzt die Methode von der Klasse Schlitten nicht?
 

httpdigest

Top Contributor
Falls du den Aufruf `istLeer()` in der Methode `istFertig()` meinst, den du versuchst, auf `this` aufzurufen*, dann ist das ja auch klar. Du machst doch überhaupt gar nichts mit einer Schlitten-Instanz in dieser Methode. Du rufst einfach nur unqualifiziert eine istLeer() Methode auf. Dies es natürlich weder auf `this` (dem Weihnachtsmann) noch als statische Methode gibt.

* = ein unqualifizierter Aufruf einer Methode ist entweder äquivalent zu this.dieAufgerufeneMethode(), falls es sich bei der Methode um eine Instanzmethode handelt, oder es wird eine entsprechend sichtbare statische Methode aufgerufen, wenn es sie gibt

Es sieht so aus, als müsste es noch an sehr vielen Stellen bei dir *click* machen. :) Vielleicht solltest du erstmal ein-zwei Java-Bücher komplett durcharbeiten.
 

Blender3D

Top Contributor
Geschenk[] temp = new Geschenk[this.geschenke.length];

temp[0] = this.geschenke[0];

for(int i = 1; i < temp.length; i++) {
temp[i] = this.geschenke[i];
}
for(int i = 0; i < temp.length; i++) {
this.geschenke[i] = temp[i];
}

return temp[0];
}
Die Funktion macht folgendes:
1) kopiert das Array geschenke in das Array temp.
2) kopiert das Array temp in das Array geschenke zurück.
3) gibt das Element temp[0] zurück.
Ist äquivalent zu:
Code:
public Geschenk getNaechstesGeschenk () {
return geschenke[0];
}
 

Funktionierdochmal

Bekanntes Mitglied
Java:
public class Weihnachtsmann extends WeihnachtsObjekt {
    private double futtervorrat;
    private Schlitten schlitten;
   
    public Weihnachtsmann(double futtervorrat, Schlitten schlitten) {
        this.futtervorrat = futtervorrat;
        this.schlitten = schlitten;
    }
   
    public boolean istFertig() {
        boolean geschenkeAusgeliefert = false;
        if(this.schlitten.istLeer() == true) {
           return true;
        } else {
            return geschenkeAusgeliefert;
        }
    }
Vllt hat es jetzt ein bisschen ge*clickt* bei mir?
 

httpdigest

Top Contributor
Würde schonmal funktionieren, ist aber noch unnötig umständlich:
Java:
public boolean istFertig() {
  boolean geschenkeAusgeliefert = false;
  if (this.schlitten.istLeer() == true) {
    return true;
  } else {
    return geschenkeAusgeliefert;
  }
}
`== true` ist IMMER unnötig:
Java:
public boolean istFertig() {
  boolean geschenkeAusgeliefert = false;
  if (this.schlitten.istLeer()) {
    return true;
  } else {
    return geschenkeAusgeliefert;
  }
}
Zuweisung zu Variable geschenkeAusgeliefert ist unnötig:
Java:
public boolean istFertig() {
  if (this.schlitten.istLeer()) {
    return true;
  } else {
    return false;
  }
}
Ein `if (bedingung) return true; else return false;` kann zu `return bedingung;` vereinfacht werden:
Java:
public boolean istFertig() {
  return this.schlitten.istLeer();
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Ostkreuz Wert von Arrays summieren Java Basics - Anfänger-Themen 1
Ostkreuz Summieren von Arrays Java Basics - Anfänger-Themen 4
E multiple Timer die sich nicht summieren Java Basics - Anfänger-Themen 12
B jTable Spalte summieren Java Basics - Anfänger-Themen 7
J 2D Arrays summieren Java Basics - Anfänger-Themen 21
J Elemente in einem 2D-Array summieren Java Basics - Anfänger-Themen 6
G Zufalls Array summieren Java Basics - Anfänger-Themen 12
V Methoden Arrayeinträge summieren Java Basics - Anfänger-Themen 5
M Threads - summieren Java Basics - Anfänger-Themen 13
D Collections Summieren in einer ArrayList - ? Java Basics - Anfänger-Themen 7
M Gerade Zahlen aus einer Zahl summieren Java Basics - Anfänger-Themen 9
S Zweidimensionales Array mit Schleife summieren Java Basics - Anfänger-Themen 2
B ArrayList füllen und Werte summieren Java Basics - Anfänger-Themen 2
T code so schreiben das er von sich selber anpasst (code soll die anzahl aller bustaben bestimmen) Java Basics - Anfänger-Themen 16
eleonori Durchschnitt aller Werte eines Baums berechnen Java Basics - Anfänger-Themen 5
F Summe aller echten Teiler Java Basics - Anfänger-Themen 2
F Summe aller echten Teiler und Zahlen zurückgeben Java Basics - Anfänger-Themen 1
D Interface Wieso Aufruf aller Methoden eines Interfaces? Java Basics - Anfänger-Themen 11
A Summe aller ungeraden Zahlen Java Basics - Anfänger-Themen 5
J ArrayList: summe aller Spielkarten Java Basics - Anfänger-Themen 15
L Array: Summe aller geraden und ungeraden Zahlen ermitteln Java Basics - Anfänger-Themen 9
B Summe aller Zahlen von 1 bis zu dieser Zahl (ohne while oder for schleife) Java Basics - Anfänger-Themen 4
L Summer aller Integer-Zahlen im Intervall [x,y] Java Basics - Anfänger-Themen 6
1 Minimum aller Elemente in einem Array bestimmen Java Basics - Anfänger-Themen 10
S Collections Ausgabe aller Tastencodes Java Basics - Anfänger-Themen 9
F Nach Beendigung aller Schleifen von vorn anfangen, Java Basics - Anfänger-Themen 5
R string aller args[] ? Java Basics - Anfänger-Themen 8
O Erste Schritte Aller Anfang ist schwer ! Bitte um Unterstützung Java Basics - Anfänger-Themen 6
O Liste aller Instanzen einer Klasse Java Basics - Anfänger-Themen 18
M Aller anfang ist schwer :D Hilfe! Java Basics - Anfänger-Themen 18
L Liste aller Klassen die in einem Paket sind Java Basics - Anfänger-Themen 7
F Aller Objekte einer Klasse Java Basics - Anfänger-Themen 9
D Summe aller Positiven Integer aus einer Liste mit ActionObject Java Basics - Anfänger-Themen 2
A Summe aller Natürlichen Zahlen - Methode Prüfen Java Basics - Anfänger-Themen 10
P Ermitteln aller perfekten Zahlen Java Basics - Anfänger-Themen 12
S Liste aller Partitionen (auch "unmounted") Java Basics - Anfänger-Themen 2
F Liste aller Ordner auf einem Laufwerk erstellen? Java Basics - Anfänger-Themen 3
Z Geburtstag aller Angestellten am bestimmten Datum Java Basics - Anfänger-Themen 59
A OOP Ausgabe aller erstellten Objekte Java Basics - Anfänger-Themen 3
M Eclipse: Durchsuchen aller Dateien? Java Basics - Anfänger-Themen 1
B Liste aller Klassen die ein Interface implementieren. Java Basics - Anfänger-Themen 7
K Anzahl aller Datensätze anzeigen ? Java Basics - Anfänger-Themen 5
L Auflistung aller Fonts Java Basics - Anfänger-Themen 2
G Liste aller WindowListener Java Basics - Anfänger-Themen 3
D Die Frage aller Fragen Java Basics - Anfänger-Themen 22
J Auslesen aller Attribute mit JDOM Java Basics - Anfänger-Themen 15
G Aller anfang is schwer. Java Basics - Anfänger-Themen 4
A ausgabe aller 10-bitzahlen Java Basics - Anfänger-Themen 6
A Liste aller Items einlesen Java Basics - Anfänger-Themen 8
B Wo finde ich eine Übersicht aller Methoden? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben