Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
eventuell hat ja jemand Lust mir einen Denkanstoss zu geben. (Bitte nicht einfach die Lösung verraten). Ich möchte bei der Ausgabe erreichen, dass mein counter Wert sich immer um 1 erhöht, leider funktioniert es nicht er bleibt immer bei 1... Die Anzahl der Aufrufe der show() Methode ist zufällig. (Andere Klasse, dort darf der Code nicht verändert werden)
Es soll in etwa so aussehen:
1-tes Paket entält...
2-tes Paket enthält...
usw.
Ich habe folgenden Code:
class SurpriseBag {
String s; //Schokolade
String a; // Buch
String b; // Stift
int counter = 0;
String kino = "Kino";
String ball = "Ball";
Ich verstehe nicht, was die ganzen Strings da sollen? Ein String für den Inhalt sollte ausreichend sein, was dann drin ist wird doch über den Konstruktor gesetzt.
Ja, es sind noch ein paar Sächelchen im Argen. Der counter zählt ja zum Beispiel nur wieviele SurpriseBag-Objekte während des Ablaufs des Programmes mal angelegt wurden aber nicht wie viele gerade existieren. Die können ja schon lange wieder dem GC zum Opfer gefallen sein. Und die show()-Methode kann auch nicht wirklich zuordnen zum wievielten Objekt jetzt diese Ausgabe gehört. Das funktioniert nur scheinbar richtig wenn man immer abwechselnd new() und show() aufruft. Wenn man allerdings drei Objekte anlegt und erst anschliessend für diese drei die show()-Methode dann gehts daneben.
Entschuldigt, dass ich mich erst jetzt wieder melde. Es handelt sich bei dem Programm um eine Aufgabenstellung. Ich habe das Programm jetzt soweit überarbeitet. Sieht jetzt so aus und macht was es soll. Lediglich bei den if Abfragen würde mich interessieren ob man das ganze effektiver also mit weniger Code erreichen kann.
Ich würde sagen es macht nur zufällig das was es soll. siehe oben.
Und du kannst den Inhalt in den Konstruktoren jeweils in einem einzelnen String abspeichern:
Code:
String inhalt;
.
.
.
inhalt = a+", "+b; // im konstruktor mit den zwei argumenten und entsprechend in den anderen Konstruktoren
in den anderen Konstruktoren entsprechend. Und im show gibst du einfach inhalt aus.
Es ist wie von dir oben beschrieben so, dass in der vorgegeben Klassen, immer erst ein Objekt erzeugt wird und im Anschluss wird es direkt aufgerufen. In der Aufgabenstellung, wird einmal ein Objekt mit 2 Werten, dann mit einem Wert und anschließend eine zufällige Zahl von Objekten (bis zu 10) ohne Wert erzeugt. An dieser Klasse darf auch nichts verändert werden.
An dieser Klasse sollst du ja auch nichts ändern. Aber um korrekt zu sein müsstest du dir für jedes Objekt noch merken das wievielte es ist. Sonst funktioniert deine Klasse nur für genau diese eine Aufrufreihenfolge !
Okay danke für die Hilfe mit den if-Abfragen funktioniert Was das merken der Objekte angeht, muss ich gestehen überlege ich gerade noch was genau gemeint ist. Ich muss gerade noch eine andere Aufgabenstellung lösen, sobald ich dass getan habe, werde ich die Reihenfolgen der Aufrufe in der anderen Klasse ändern um zu schauen was passiert. Werde es dann heute oder morgen hier posten. Aber vielen vielen Dank für deine Hilfe.