NullPointer

  • Themenstarter Themenstarter Chaosthechamp
  • Beginndatum Beginndatum
C

Chaosthechamp

Gast
Hi,
ich habe ein Problem mit meinem Java Programm. Es soll ein Objekt einer Klasse erstellen und Auslesen können. Die Methode zum Erstellen funktioniert einwandfrei, und das Auslesen eigentlich auch, bis auf den GregorianCalendar.
Der Fehler taucht erst beim Ausführen auf, das Kompilieren geht einwandfrei. Immer wenn es zum Auslesen des GregorianCalendar-Wertes kommt, tritt eine NullPointerException auf.
Entweder liegt der Fehler in den Zeilen 146-148, 161-163, 182 oder 196 , ich finde ihn aber irgendwie nicht...
Kann mir pls irgendwer helfen? Ich muss das Programm bis übermorgen für die Schule fertig haben...
Hier noch der Programmausschnitt:

[JAVA=129]
java.util.Calendar dhilfe = new GregorianCalendar();
DVD d1= new DVD();
Buch m1= new Buch();

public void itemStateChanged(ItemEvent e)
{
if (typ.getSelectedItem()=="DVD")
{
d1.lesen("neueDVD.dat");
id.setInt(d1.getId());
if (d1.getAusgeliehen()==true)
ausgeliehen.select("Ja");
if (d1.getAusgeliehen()==false)
ausgeliehen.select("Nein");
dhilfe = d1.getBis();
bistag.setInt(dhilfe.get(Calendar.DAY_OF_MONTH));
bismonat.setInt(dhilfe.get(Calendar.MONTH)+1);
bisjahr.setInt(dhilfe.get(Calendar.YEAR));
titel.setText(d1.getTitel());
macher.setText(d1.getInterpret());
f5.setVisible(false);
f6.setVisible(true);
}
if (typ.getSelectedItem()=="Buch")
{
m1.lesen("neuesBuch.dat");
id.setInt(m1.getId());
if (m1.getAusgeliehen()==true)
ausgeliehen.select("Ja");
if (m1.getAusgeliehen()==false)
ausgeliehen.select("Nein");
dhilfe = m1.getBis();
bistag.setInt(dhilfe.get(Calendar.DAY_OF_MONTH));
bismonat.setInt(dhilfe.get(Calendar.MONTH)+1);
bisjahr.setInt(dhilfe.get(Calendar.YEAR));
titel.setText(m1.getTitel());
macher.setText(m1.getAutor());
f5.setVisible(true);
f6.setVisible(false);
}
}

boolean ahilfe;
public void b1_ActionPerformed(ActionEvent evt) //Erzeugen des Objektes
{ if (typ.getSelectedItem()== "DVD")
{

d1.setId(id.getInt());
if (ausgeliehen.getSelectedItem() == "Ja")
ahilfe = true;
if (ausgeliehen.getSelectedItem() == "Nein")
ahilfe = false;
d1.setAusgeliehen(ahilfe);
d1.setBis(new GregorianCalendar(bisjahr.getInt(),bismonat.getInt()-1,bistag.getInt()));
d1.setTitel(titel.getText());
d1.setInterpret(macher.getText());
d1.schreiben("neueDVD.dat");
}
if (typ.getSelectedItem()== "Buch")
{

m1.setId(id.getInt());
if (ausgeliehen.getSelectedItem() == "Ja")
ahilfe = true;
if (ausgeliehen.getSelectedItem() == "Nein")
ahilfe = false;
m1.setAusgeliehen(ahilfe);
m1.setBis(new GregorianCalendar(bisjahr.getInt(),bismonat.getInt()-1,bistag.getInt()));
m1.setTitel(titel.getText());
m1.setAutor(macher.getText());
m1.schreiben("neuesBuch.dat");
}
}
[/code]

Danke für Antworten schonmal im Vorraus und hoffentlich kommen auch viele gute 🙂
 
Hi,

der Code kann eigentlich nur funktionieren wenn "dhilfe" eine Instanzvariable ist. Sonst kann es sein das die
Variable nicht initialisiert ist und du deshalb eine NPE bekommst.

Nebenbei: Strings vergleicht man mit "equals" (oder "equalsIgnoreCase") und nicht mit "==".
 
Ok, Problem gelöst.
Das Problem war, dass alle Variablen in meiner Klasse standartmäßig vor Programmstart auf 0 gesetzt waren und 0 war für GregorianCalendar kein passender Wert für den Tag, deswegen der Error.
 

Neue Themen


Zurück
Oben