[Erledigt] ArrayList / Methoden Problem

ich soll eine Cocktailbar programmieren. Diese eintählt eine take Methode die eine Zutat aus einem Bestand nimmt. diesen Bestand habe ich in einer ArrayList gespeichert

public void take(Ingredient ingredient, int quantity){}

diese Methode funktioniert soweit auch. Eine Zweite Methode soll die Zutaten eines Rezeptes entfernen


private ArrayList<Recipe> recipeList = new ArrayList<Recipe>();

hier werden Rezepte aufbewahrt


public class Recipe{
private String name;
private ArrayList<Ingredient> recipeIngredients = new ArrayList <Ingredient>();
}

so sehen die Rezepte aus.

Nun soll die Methode die Rezeptzutaten aus dem Bestand entfernen


public void mix(Recipe recipe)
   for (int i = 0; i = recipe.getRecipeIngredients().size(); i++) {  // durchläuft die Rezeptzutaten
this.take(recipe.getRecipeIngredients().get(i), recipe.getRecipeIngredients().get(i).getQuantity();
}
}

diese Methode implementiert die Take methode und soll die ausgelesenen Zutaten aus dem bestand entfernen. Die Take Methode funktioniert wenn man einzelnen Zutaten entfernt. Die Mix leider nicht.

Freue mich über jede hilfe

fehler liegt in der mix Methode

habs grad herausgefunden

es muss


this.take(recipe.getRecipeIngredients().get(i), recipe.getRecipeIngredients().get(i).quantity);

heißen!

argh…es klappt doch nicht…muss ein anderer Feher sein

kann mir jemand sagen wie ich in der Set Methode der RezeptZutaten

die menge der jeweiligen Zutat mitgeben kann?


public void setRecipeIngredients(ArrayList<Ingredient> recipeIngredients){

// Hier sollte mitgegeben werden wie viel vom jeweiligen
// Ingredient gebraucht wird

thiss.recipeIgnredients = recipeIngredients;
}

Ein Rezept ist doch eine Mischung von Zutaten in der richtigen Menge.
Also kapselt ein Rezept mindestens folgende Daten:
[ul][li]Name des Rezeptes
[/li][li]Eine Aufzählung von Zutaten mit der benötigten Menge
[/li][/ul]
Diese Aufzählung könnte man bspw. in einer HashMap anlegen.
Schlüssel ist das Zutaten-Objekt, Wert ist die Menge der Zutat.

Ich hab meine Rezepte alle in einer ArrayList gespeichert!

Nun muss ich eine Methode machen die einem Rezept die Zutaten mit der Menge hinzufügt.

Muss also meine Klasse Rezept

String name;
Map<Ingredient, quantity>

so in etwa sein ?!

Wäre es nicht auf mögliche eine ArrayList zu machen

und einen Konstruktor für die Rezepte zu machen der

Name d. Rezeptes
Names d. Zutaten
Menge d. Zutaten

verlangt?

[QUOTE=Unregistriert]und einen Konstruktor für die Rezepte zu machen der

Name d. Rezeptes
Names d. Zutaten
Menge d. Zutaten[/QUOTE]
Wäre glaube ich nicht das Richtige.
Dann schon eher ein Konstruktor für ein leeres Rezept, der nur den Namen des Rezeptes verlangt.

Wenn du das mit einer ArrayList machen willst, brauchst du ein weiteres Objekt, welches für je eine Zutat den Namen und die benötigte Menge kapselt.

Dem Objekt kannst du dann einen Konstruktor verpassen, der eine Zutat mit ihrer Menge entgegen nimmt. Das Objekt speicherst du schließlich in der ArrayList.

solli ch eine neue Klasse machen die das ganze Speichert und das in der ArrayList dann abspeichern?!

Meinst du das mit weiteres objekt?

Genau.

hm…so kann das glaube ich nicht funktionieren.

Wenn ich 2 Klassen machen umd die Informationen zu kapseln

hab ich das Problem dass ich kein gleichen Objekte erzeugen kann…

dann kann mein Rezept nicht das gleiche „Wasser“ haben wie in der Bar schon drin ist :confused:

Doch, du überschreibst die equals()-Methode so, dass du darin die Namen des Wassers vergleichst.