Schleifen-Problem mit Arrays

Status
Nicht offen für weitere Antworten.

Java-Problems

Bekanntes Mitglied
Guten Morgen zusammen,
ich habe ein Problem mit den Schleifen...

und zwar sollte beim Aufrufen der MEthode "add" (siehe 1. Code) ja ein Objekt Recipe erstellt werden und die dazugehörigen Ingredients in eine ArrayList aufgenommen werden.
Das Eingeben auf der Konsole etc. klappt auch alles, nur wird irgendwie nur das letzte IngredientsObjekt dann nur in den Array übernommen, sodass das erste irgendwie nicht gespeichert wurde.


Code:
	public void add(Recipe recipe) throws CocktailException {

		String inputNa = IOTools.readLine("Name of the recipe: ");
		int inputNmb = IOTools.readInt("Number of needed Ingredients: ");
		Recipe.recipeList.add(new Recipe(inputNa, inputNmb));

	
		for (int i = 0; i < inputNmb; i++) {
			System.out.println(Recipe.ingredient.ingredientList.get(i));
		}
	}

Code:
	public Recipe(String nameRec, int inputNmb) {
		this.nameRec=nameRec;
		for (int i = 0; i < inputNmb; i++) {
			Recipe.ingredient.ingredientList.add(new Ingredient());
		}
	}

Code:
public Ingredient() {
		this.nameIng = IOTools.readLine("Name of the ingredient: ");
		this.quantityNec = IOTools.readInt("Needed quantity: ");
	}


main-Methode:
Die For-Schleife sollte eig. beide Array-Objekte ausgeben, gibt aber nur das letzte aus, obwohl ja eig. der gesamte Array aufgerufen wird... D.h. wohl dass das erste Objekt nicht in die ArrayList übernommen wurde.
Was mache ich falsch?
Code:
		String inputNa = IOTools.readLine("Name of the recipe: ");
		int inputNmb = IOTools.readInt("Number of needed Ingredients: ");

activity.add(null); 
System.out.println("");
	for (int i=0; i<Recipe.ingredient.ingredientList.size();i++)}
		 System.out.println(Recipe.ingredient.ingredientList.get(i));
		 }
 

hdi

Top Contributor
Soweit ich das überflogen hab, müsste es stimmen.

Poste bitte mal deinen ganzen Code, also alle Klassen die damit zusammenhängen sowie
die komplette(!) main Methode.

Sag bitte ausserdem, was du genau wo eingibst, und was als Ergebnis rauskommt, und was
du eigentlich erwartet hättest.

Danke
 

hdi

Top Contributor
Die Übeltäter:

Code:
static String inputIng;
static String nameIng;

Das sind statische, also nicht an ein Objekt gebundene Variablen. D.h. beim Einlesen
des 1. Ingredients setzt du den Namen auf "test1", beim Einlesen des zweiten auf "test2".
In der Schleife gibtst du immer wieder diesen statischen String aus, der jetzt auf test2 ist.

Lösung:

Die Variablen musst du zu Member-Variablen machen, also NICHT static.
So hat jedes Ingredient-Objekt seinen eigenen Namen + Quantity.

EDIT: Ich seh grad du hast ja auch noch nicht-statische. Alles sehr strange..
Ich frag mich wieso denn das list.toString() dir überhaupt solche Namen ausspuckt...

Lösch einfach mal die 2 statischen Einträge, dann müsste dir erstmal eine Liste mit komischen
Zeichen rauskommen, was aber auch gut so ist.

Dann füge in die Klasse Ingredient noch folgende Methode ein:

Code:
@Override
public String toString(){
     return this.name; // <- oder wie auch immer dein Attribut da heisst hab den Code grad nicht
}
 

Java-Problems

Bekanntes Mitglied
herzlichen Dank!
Es Funktioniert soweit!

Noch eine Allgemeine Frage zu meinem Projekt:
Bin ich hierbei überhaupt auf dem richtigen Weg, wenn ich Ingredients und Recipes anlegen will, und dann dementsprechend einem Recipe mehrere Ingredients zuordnen will?
Benötige ich hierzu keine Datenbankanbindung oder sowas? Frage mich nämlich, wie das mit dem Speichern der Recipes laufen soll. Es wird ja nicht nur eines angelegt... Wird dann nicht jedesmal das andere überschrieben?
Eine Datenbankanbindung ist eigentlich nicht erwünscht, aber ich frage mich halt, ob das überhaupt ohne geht...
 

hdi

Top Contributor
Ja dein Problem ist generell, dass du zuviel mit statischen Dingen arbeitest.
Generell gibt es in einem guten kleinen Programm kein einziges mal das Wort "static" bis
in der main-Methode.

Also davon musst du dich trennen, die Klassen sollten nur individuelle Attribute haben,
nicht static.

Und dann haste auch kein Problem mit mehrere Rezepten, weil du über Konstruktoren einfach
mehrere Objekte vom Typ Recipe anlegen kannst etc..

Weisst du was ich mein?
 

Java-Problems

Bekanntes Mitglied
benötige ich "static" nicht, damit ich meine Methoden etc. in anderen Klassen die keine main-Methode haben aufrufen kann etc.?
Beispielsweise: Wenn ich eine Methode "getRecipe()" erstelle, und in der BarActivity noch eine habe, die heißt:
"search(recipe recipe)", dann müsste ja diese die getRecipe-Methode implementieren und dazu würde ich doch "static" benötigen, oder?
 

hdi

Top Contributor
static heisst nur, diese Methode ist nicht an ein Objekt gebunden, sondern einfach eine Funktion die
eine Klasse bereitstellt. Aber sowas ist in gutem OO-Design nicht nötig, weil alles über Objekte geht.

Hier mal Bsp, wie ich das angehen würde, vllt kannst du dir dann besser vorstellen worauf ich hinauswill:

Code:
public class Recipe {

	private String name;
	private List<Ingredient> ingredients;

	public Recipe(String name) {

		this.name = name;
		this.ingredients = new ArrayList<Ingredient>();
	}

	public void addIngredient(Ingredient i) {
		this.ingredients.add(i);
	}

	// Wird aufgerufen wenn man ein Recipe-Objekt zB per System.out.println()
	// ausgibt. Zeigt eine Liste aller Zutaten.
	@Override
	public String toString() {
		String asString = "";
		asString += "---" + this.name + "---" +"\n";
		for (Ingredient i : ingredients) {
			asString += i + "\n";
		}
		return asString;
	}
}

Code:
public class Ingredient {

	private String name;
	private int quantity;

	public Ingredient(String name, int quantity) {
		this.name = name;
		this.quantity = quantity;
	}

	public String getName() {
		return name;
	}

	public int getQuantity() {
		return quantity;
	}
	
	// Wird aufgerufen wenn man ein Ingredient-Objekt zB per System.out.println()
	// ausgibt. Zeigt den Namen und in Klammern die Menge der Zutat.
	@Override
	public String toString() {
		return this.name + " [" + this.quantity + "]";
	}
}

Code:
public class Bar {

	private List<Recipe> recipes;

	public Bar() {
		recipes = new ArrayList<Recipe>();
	}

	public void addRecipe(Recipe r) {
		this.recipes.add(r);
	}
	

	public static void main(String[] args) {

		Bar bar = new Bar();

		Recipe recipe = new Recipe("Java-Profi-Trunk");
		recipe.addIngredient(new Ingredient("Geduld", 100));
		recipe.addIngredient(new Ingredient("Übung", 500));
		recipe.addIngredient(new Ingredient("Spass", 1000));
		bar.addRecipe(recipe);

		System.out.println(recipe);
	}
}

Merkst du wo der Unterschied ist? Ich arbeite nur auf Objekten, nicht auf irgendwelche statischen Dingen.
Alles bei mir ist ein individuelles Objekt, und so sollte man es auch immer machen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Schleifen Problem Java Basics - Anfänger-Themen 2
N Problem mit Schleifen Java Basics - Anfänger-Themen 20
C Erste Schritte While-Schleifen-Problem Java Basics - Anfänger-Themen 3
S for-Schleifen Problem Java Basics - Anfänger-Themen 4
X Methoden Logik-Problem mit Schleifen. Java Basics - Anfänger-Themen 7
N Schleifen Problem Java Basics - Anfänger-Themen 3
N Schleifen problem Java Basics - Anfänger-Themen 17
H Kleines Problem bei den Schleifen Java Basics - Anfänger-Themen 5
S Timer / Schleifen Verständnis Problem Java Basics - Anfänger-Themen 3
N Input/Output Schleifen - Ausgabe Problem Java Basics - Anfänger-Themen 2
M Schleifen-Problem Java Basics - Anfänger-Themen 7
A OOP Arraybefüllung mit for-Schleifen Problem: Umsprung in die zweite Zeile Java Basics - Anfänger-Themen 11
S Problem mit while-Schleifen Java Basics - Anfänger-Themen 6
S Problem bei Schleifen Java Basics - Anfänger-Themen 4
A Problem mit for Schleifen und Zeichnen HILFE!!! Java Basics - Anfänger-Themen 6
P while schleifen problem Java Basics - Anfänger-Themen 14
A Mitternachtsformel. Problem mit if Schleifen (Glaub ich). Java Basics - Anfänger-Themen 16
S Problem mit schleifen Java Basics - Anfänger-Themen 2
B Problem bei for Schleifen Java Basics - Anfänger-Themen 5
C Schleifen-Problem Java Basics - Anfänger-Themen 6
N Problem mit Schleifen-Durchlauf Java Basics - Anfänger-Themen 2
T schleifen Java Basics - Anfänger-Themen 3
Kingdako Wie löse ich eine Mathematische Formel mit Arrays und Schleifen? Java Basics - Anfänger-Themen 32
S Erste Schritte While Schleifen Java Basics - Anfänger-Themen 11
M geschachtelte for-Schleifen - Einmaleins ausgeben Java Basics - Anfänger-Themen 3
Mikejr Schleifen Java Basics - Anfänger-Themen 4
java-starter Erste Schritte Mit While Schleifen Programme schreiben Java Basics - Anfänger-Themen 4
K geschachtelte "for-Schleifen" Java Basics - Anfänger-Themen 3
Alen123 Potenzen in Schleifen Java Basics - Anfänger-Themen 26
Alen123 String wiederholen mit Schleifen Java Basics - Anfänger-Themen 1
A Schleifen und Boolsche Ausdrücke Java Basics - Anfänger-Themen 42
W Schleifen Java Basics - Anfänger-Themen 36
S Interaktive Abfrage, Hilfe mit Schleifen! Java Basics - Anfänger-Themen 6
Mojtaba1986 Hausaufgabe (Schleifen) Java Basics - Anfänger-Themen 33
A Schleifen Verzweigungen Java Basics - Anfänger-Themen 18
C Sind die while-Schleifen richtig in for-Schleifen ersetzt worden? Java Basics - Anfänger-Themen 8
H Muster mit verschachtelten Schleifen kreieren. Java Basics - Anfänger-Themen 2
A Schleifen in Java Java Basics - Anfänger-Themen 4
A Schleifen, Hilfe! Java Basics - Anfänger-Themen 6
C Schleifen Durchlauf Java Basics - Anfänger-Themen 7
M While-Schleifen-Fehler Java Basics - Anfänger-Themen 4
J Schleifen Wiederholendes Zeichenmuster Java Basics - Anfänger-Themen 4
K For-Schleifen Ablauf Java Basics - Anfänger-Themen 5
L Anzahl der Aufrufe von Schleifen bestimmen Java Basics - Anfänger-Themen 1
S Hilfe bei Java Aufgabe (Schleifen) Java Basics - Anfänger-Themen 25
B Verschachtelte For Schleifen Java Basics - Anfänger-Themen 8
G Input/Output Schleifen Durchlauf Java Basics - Anfänger-Themen 5
A Erste Schritte Schleifen Java Basics - Anfänger-Themen 5
J Muster und Schleifen Java Basics - Anfänger-Themen 33
H ERGÄNZUNGSFRAGE: Klammersetzung bei if-else Anweisungen und Schleifen Java Basics - Anfänger-Themen 2
scratchy1 Argumente mit verschiedenen Schleifen ausgeben Java Basics - Anfänger-Themen 3
C Schleifen Java Basics - Anfänger-Themen 12
E geschachtelte for-schleifen Java Basics - Anfänger-Themen 6
L Übungsaufgabe zu Schleifen Java Basics - Anfänger-Themen 7
W Erste Schritte Rechnen mit Schleifen? Denkanstoß gesucht Java Basics - Anfänger-Themen 15
A Erste Schritte for-Schleifen vereinfachen Java Basics - Anfänger-Themen 5
S Immer das selbe mit den Schleifen Java Basics - Anfänger-Themen 24
kokojamboo92 Schleifen und Arrays Java Basics - Anfänger-Themen 7
O Array, geschachtelte For-Schleifen Java Basics - Anfänger-Themen 34
S While-Schleifen Ausgabe als String? Java Basics - Anfänger-Themen 1
R Threads Pause zwischen zwei Schleifen Java Basics - Anfänger-Themen 1
D verschachtelte Schleifen Java Basics - Anfänger-Themen 6
H Schleifen (anfänger) Java Basics - Anfänger-Themen 13
C Variablen in Schleifen außerhalb verwenden Java Basics - Anfänger-Themen 2
L Schachbrettnummerierung mit Schleifen.. Java Basics - Anfänger-Themen 3
H Schleifen Java Basics - Anfänger-Themen 8
L Zahlentripel und for-Schleifen Java Basics - Anfänger-Themen 2
T Spezielle Aufgabe zu Schleifen Java Basics - Anfänger-Themen 3
T Erste Schritte Schleifen-Stop Java Basics - Anfänger-Themen 14
kilopack15 Rekursion und Schleifen Java Basics - Anfänger-Themen 27
I Mehre While-Schleifen hintereinander Java Basics - Anfänger-Themen 13
P Terminieren diese Schleifen Java Basics - Anfänger-Themen 6
L Was heißt terminieren bei Schleifen? Java Basics - Anfänger-Themen 3
I Brauche Hilfe bei Schleifen Java Basics - Anfänger-Themen 18
W Schleifen bei Greenfoot Java Basics - Anfänger-Themen 4
B Operatoren Stopp von Schleifen Java Basics - Anfänger-Themen 9
K Loop ohne Schleifen Java Basics - Anfänger-Themen 2
V Rechenzeichen bei Termen - Darstellung bei Schleifen Java Basics - Anfänger-Themen 7
E Muster auf der Konsole ausgeben lassen (Schleifen) Java Basics - Anfänger-Themen 7
C Erste Schritte Probleme bei Aufgaben zu Schleifen Java Basics - Anfänger-Themen 11
F OOP Schleifen und Probleme mit Setter und Getter Java Basics - Anfänger-Themen 1
L Blöcke bei verschachtelten Schleifen Java Basics - Anfänger-Themen 3
L Kurze Frage zu verschachtelten Schleifen Java Basics - Anfänger-Themen 3
E Erste Schritte Sternchenpyramide mit For-Schleifen erstellen Java Basics - Anfänger-Themen 9
H Best Practice Wie mit break verschachtelte Schleifen komplett verlassen? Java Basics - Anfänger-Themen 2
arti28 Erste Schritte For-Schleifen und While-Schleifen, String als Muster ausgeben. Java Basics - Anfänger-Themen 3
T [Schleifen] Schleifenproblem Java Basics - Anfänger-Themen 4
F Verschachtelte Schleifen Java Basics - Anfänger-Themen 4
J Hilfe verschachtelte Schleifen Java Basics - Anfänger-Themen 5
O Geschachtelte For-Schleifen Java Basics - Anfänger-Themen 1
D Zeichnen, Schleifen Java Basics - Anfänger-Themen 7
S Zeichnen , Schleifen Java Basics - Anfänger-Themen 4
L Schleifen und Array, nur letzte Eingabe wird ausgegeben Java Basics - Anfänger-Themen 3
Z Frage zu for-Schleifen Java Basics - Anfänger-Themen 5
M Wie kann ich eine Ausgabe vervielfachen? (Schleifen) Java Basics - Anfänger-Themen 4
Z Schleifen Beispiel: Fakultät Java Basics - Anfänger-Themen 26
T Erneute Frage zu Schleifen Java Basics - Anfänger-Themen 4
V Schleifen die nicht voneinander abhängen! (für CAN-BUS) Java Basics - Anfänger-Themen 10
T Anfängerfrage zu Schleifen und Arrays Java Basics - Anfänger-Themen 5
W Methoden While Schleifen Ergebnis im String speichern Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben