Rezeptbuch

Phoenix87

Mitglied
Hallo!
Ich habe eine Frage:
ich bin gerade dabei, ein kleines Rezeptbuch-Programm zu schreiben, aber ich bekomme beim ausführen jedesmal eine NullPointerException zur Laufzeit.
Das ist für mich unerklärt, weil bis zum dem Fehler in Zeile 19 (spritzgebaeck.zutaten.add(Butter);) sowohl das Objekt spritzgebaeck, als auch das Objekt Butter, sowie die ArrayList zutaten m.E. nach nicht "null" sein können. Könnt ihr mir sagen wo mein Fehler liegt?
Danke sehr!:)


Java:
import java.util.ArrayList;
class PTest
{

public static void main (String[] args)
{

Zutat Butter= new Zutat("Butter", 500.0, "g");
Zutat Puderzucker= new Zutat("Puderzucker", 250.0, "g");
Zutat Mehl= new Zutat("Mehl", 1000.0, "g");
Zutat Eier= new Zutat("Eier", 3, "Stueck");
Zutat Vanillezucker= new Zutat("Vanillezucker", 4, "Paeckchen");
Zutat Backpulver= new Zutat("Backpulver", 4, "TL");
Zutat Milch= new Zutat("Milch", 2, "EL");
Zutat Zitrone= new Zutat("Zitrone", 1, "Spritzer");


Plaetzchenrezept spritzgebaeck=new Plaetzchenrezept("Spritzgebaeck", 200, "Alles vermischen, ca. 1 Stunde kuehl stellen. \nDen Teig ausrollen und Plaetzchen ausstechen. \nDie Plaetzchen ca. 10-12 Minuten bei 200 °C \nbacken und mit Schokolade dekorieren.");
spritzgebaeck.zutaten.add(Butter);
spritzgebaeck.zutaten.add(Puderzucker);
spritzgebaeck.zutaten.add(Mehl);
spritzgebaeck.zutaten.add(Eier);
spritzgebaeck.zutaten.add(Vanillezucker);
spritzgebaeck.zutaten.add(Backpulver);
spritzgebaeck.zutaten.add(Milch);
spritzgebaeck.zutaten.add(Zitrone);


System.out.println(spritzgebaeck.getTitel()); 
System.out.println(spritzgebaeck.getAnzahlPlaetzchen() + " Plaetzchen \n");

for(int i=0; i<spritzgebaeck.zutaten.size(); i++)
	{
	System.out.println(spritzgebaeck.zutaten.get(i).getMenge() + " " + spritzgebaeck.zutaten.get(i).getEinheit() + " " + spritzgebaeck.zutaten.get(i).getName()); 
	}
System.out.println("\n" + spritzgebaeck.getAnweisungen());

Plaetzchenrezept neuesSpritzgebaeck=new Plaetzchenrezept();
neuesSpritzgebaeck=spritzgebaeck;
neuesSpritzgebaeck.passeAnFuer(300);


System.out.println(neuesSpritzgebaeck.getTitel()); 
System.out.println(neuesSpritzgebaeck.getAnzahlPlaetzchen() + " Plaetzchen \n");

for(int i=0; i<neuesSpritzgebaeck.zutaten.size(); i++)
	{
	System.out.println(neuesSpritzgebaeck.zutaten.get(i).getMenge() + " " + neuesSpritzgebaeck.zutaten.get(i).getEinheit() + " " + neuesSpritzgebaeck.zutaten.get(i).getName()); 
	}
System.out.println("\n" + neuesSpritzgebaeck.getAnweisungen());



}
}

Java:
import java.util.ArrayList;

class Plaetzchenrezept
{

private String titel;
private int anzahlPlaetzchen;
ArrayList<Zutat> zutaten;
private String anweisungen;

//Konstruktor
public Plaetzchenrezept(String Titel, int AnzahlPlaetzchen, String Anweisungen)
	{
	ArrayList<Zutat> zutaten =new ArrayList<Zutat>();
	titel=Titel;
	anzahlPlaetzchen=AnzahlPlaetzchen;
	anweisungen=Anweisungen;
	}

public Plaetzchenrezept()
	{
	titel="Unbenannt";
	anzahlPlaetzchen=0;
	anweisungen="Unbekannt";
	}

//Modifier titel
public String getTitel()
	{
 	return titel;	
	}

public void setTitel(String x)
	{
	titel = x;
	}

//Modifier anzahlPlaetzchen
public int getAnzahlPlaetzchen()
	{
 	return anzahlPlaetzchen;	
	}

public void setAnzahlPlaetzchen(int x)
	{
	if(x>0)
		{
		anzahlPlaetzchen = x;
		}
	}

//Modifier anweisungen
public String getAnweisungen()
	{
 	return anweisungen;	
	}

public void setAnweisungen(String x)
	{
	anweisungen = x;
	}

public void passeAnFuer(int neueAnzahl)
	{
	double faktor=(double) 1/anzahlPlaetzchen*neueAnzahl;
	for(int i=0; i<zutaten.size(); i++)
		{
		zutaten.get(i).setMenge(zutaten.get(i).getMenge()*faktor);
		}
	setAnzahlPlaetzchen(neueAnzahl);
	}
	
}

Java:
class Zutat
{

private String name;
private double menge;
private String einheit;

//Konstruktor
public Zutat(String Name, double Menge, String Einheit)
	{
	name=Name;
	menge=Menge;
	einheit=Einheit;
	}
//Konstruktor
public Zutat()
	{
	name="Unbenannt";
	menge=0;
	einheit="Unbenannt";
	}


//Modifier name
public String getName()
	{
 	return name;
	}

public void setName(String x)
	{
	name = x;
	}

//Modifier menge
public double getMenge()
	{
 	return menge;
	}

public void setMenge(double x)
	{
	if(x>0)
		{
		menge = x;
		}
	}

//Modifier einheit
public String getEinheit()
	{
 	return einheit;
	}

public void setEinheit(String x)
	{
	einheit = x;
	}
}
 

rme

Top Contributor
Hallo :)

Schöne Idee :D Hier der Fehler im Konstruktor:

Java:
    ArrayList<Zutat> zutaten =new ArrayList<Zutat>();

Du hast dort eine lokale Variable angelegt und greifst nicht wie gewollt auf die Instanzvariable zu, deshalb ist "zutaten" danach noch null. Beheben:

Java:
   zutaten =new ArrayList<Zutat>();

Viel Spaß beim Backen und Kompilieren! :)
 

Oben