Stacks

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
hi hätte mal zwei fragen:

1. Wenn ich ein Objekt in einen Stack lege und nun von diesem Objekt eine funktion aufrufen will, wie muss dann die funktionlauten um den Objektnamen zuerfarhen?

also so ist das gemeint
public void obstHinzufügen(Obst name)
{
objekt.push(name);

gewichtInsgesamt= gewichtInsgesamt + name.getGewicht();

}

das geht ja aber nun wenn ich diese Objekt wieder entferne mit:

public void remove()
{

objekt.pop()
}
möchte ich desen gewicht ja wieder abziehen können, aber wie?

2. Jedes mal wenn ich ein Objekt in den Stack einfüge addiere ich das gesamtgeicht aber am liebsten möchte ich das Gewicht erst addieren wenn ich die Funktion getGesamtGewicht aufruf, weil wenn ich zwischen Zeitlich das Gewicht der einzelnen Objekt ändere wird das ja nicht mitübernommen, wenn ich es jedes mal aber neu berechenen würde mit der funktion getGesamtGewicht müste ich aber imemr auf alle Elemente des Stacks zugreifen können um die Objektfunktion .getGewicht ausführen zu können. Ist das möglich?
 

André B.

Bekanntes Mitglied
Die Methode Stack#pop() liefert dir das gelöschte Objekt zurück. D.h. Du kannst das Objekt aus dem Stack löschen und trotzdem noch eine Referenz auf dieses bekommen:
Code:
Object o = stack.pop();
o.irgendeineMethode();
 
G

Guest

Gast
Erst mal danke für die Antwort, aber geht so leider auch nicht, da es dann Probleme mit den Typen gibt, aber gibt es denn keine möglichkeit den Namen einens Objekte herauszulesen?
 

André B.

Bekanntes Mitglied
Was für Objekte speicherst du denn in dem Stack? Du könntest den Stack nämlich dann mit
Code:
Stack<Klassenname> stack = new Stack<Klassenname>();
initialisieren.
 
G

Guest

Gast
Also die Klasse die ich in dem Stack speichere heißt Obst.

Im mom wird mein Stack so in nitialisiert:
private Stack objekt = new Stack ();

weiß leider nicht genau wie ich das schrieben mit mit den < ... > ?

Falls das so aussehen soll:
private Stack Obst objekt = new Stack Obst ();

geht irgendwie nicht :oops:

Sry aber danke für deine Hilfe!
 

André B.

Bekanntes Mitglied
Das müsste in deinem Fall so aussehen:
Code:
Stack<Obst> stack = new Stack<Obst>();
 

André B.

Bekanntes Mitglied
Das könnte mit deiner Java-Version zusammenhängen. Welche benutzt du? Mit java 1.5 sollte es eigentlich gehen.
Mfg André
 
B

Beni

Gast
Und wenn du 1.5 nicht verwenden kannst, mach einen Cast:
Code:
Obst top = (Obst)stack.pop();
Das ist halt fehleranfälliger als die Variante mit dem <Obst>.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben