NullPointerException

Von: , Frage gestellt am Di, 2. Jan 2007

huhu...

habe ein problem mit java.. ich bekomme immer eine nullpointerexception.
weiss mir keinen rat mehr, dehalb wende ich mich mal an euch..
bitte versucht zu helfen.
ich versuche eine class namens daten, die aus zwei strings und vier vectoren besteht, in einen vector zu schreiben. dabei bekomm ich immer diese exception, die textfield sind nicht leer.
kann man vieleicht vectoren nicht so füllen(über eine klasse)?
sorry wenn der fehler vielleicht sehr dumm ist, bin noch anfänger...


String cmg = e.getActionCommand();
if (cmg.equals("Einfügen"))
{
try
{
Daten dat= new Daten();
dat.scheinnr=scheinnr.getText();
dat.spiel =spiel.getText();
for (int a=1;a<=10;a++)
dat.tausend.add(atext[a].getText());
for (int a=11;a<=20;a++)
dat.jocker.add(atext[a].getText());
for (int a=21;a<=30;a++)
dat.zwanzig.add(atext[a].getText());
for (int a=31;a<=50;a++)
dat.fuenfzig.add(atext[a].getText());
scheine.add(dat);
loeschen();
}
catch (NullPointerException npe)
{
System.out.println(npe);
}

vielen dank für eure hilfe..
andy

10 Antworten zu dieser Frage

  1. Antwort von nach 27 Minuten 0 hilfreich
    Re: NullPointerException

    Hallo,

    Java zählt von 0 ab.

    Gruß

    Peter [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

    • Antwort von nach einer Stunde 0 hilfreich
      Re^2: NullPointerException

      Hallo,

      Java zählt von 0 ab.

      Gruß

      Peter

      Hi Peter..

      Ja ist mir bekannt, danke.. das TextField [0] ist im JPanel gesetzt, ist aber nicht abgefragt und wird auch nicht beschrieben... Ist nur für mich da, soweit unwichtig... Da nicht das ganze TextField Array gespeichert wird, kann ich auch felder auslassen, oder?
      Kann mir nicht vorstellen das es daran liegt dass ich Array[0] nicht beachte..
      Hab hier nochmal zur Sicherheit die ganze Hauptklasse reingesetzt... Ist allerdings noch lange nicht vollständig.

      import java.util.*;
      import java.awt.*;
      import java.awt.event.*;
      import javax.swing.*;
      import javax.swing.border.*;
      import java.io.*;


      public class Menue extends JFrame implements ActionListener
      {

      static Vector scheine;
      Container con;
      int zeiger=0;
      Daten dat;
      final String FILENAME="c:\\Glueckbingo.ser";
      JPanel jp1,jp2;
      JPanel[] panel={ jp1= new JPanel(),
      jp2= new JPanel()};

      JMenuBar menuBar = new JMenuBar();
      JMenu menuDatei = new JMenu();
      JMenuItem menuDateiOffen= new JMenuItem();
      JMenuItem menuDateiSpeich= new JMenuItem();
      JMenuItem menuDateiExit = new JMenuItem();

      JButton b1= new JButton("->");
      JButton b2= new JButton("<-");
      JButton b3= new JButton("Einfügen");


      JLabel jl0,jl1,jl2,jl3,jl4,jl5,jl6;
      JLabel[] label={ jl0= new JLabel("Scheinnummer"),
      jl1= new JLabel("Spiel"),
      jl2= new JLabel("1000 EURO"),
      jl3= new JLabel("JOCKER"),
      jl4= new JLabel("20000 EURO"),
      jl5= new JLabel("50000 EURO"),
      /*jl6= new JLabel(" ")*/};

      JTextField[] atext= new JTextField[50];
      JTextField spiel= new JTextField();
      JTextField scheinnr= new JTextField();

      public Menue()
      {
      super ("Menue!");
      con=getContentPane();
      setSize(800,400);
      setLocation(100,100);
      menuDatei.setLabel("Datei");
      menuDateiOffen.setLabel("HD-Öffnen");
      menuDateiSpeich.setLabel("HD-Speichern");
      menuDateiExit.setLabel("Exit");
      menuDateiOffen.addActionListener(this);
      menuDateiSpeich.addActionListener(this);
      menuDateiExit.addActionListener(this);
      menuDatei.add(menuDateiOffen);
      menuDatei.add(menuDateiSpeich);
      menuDatei.add(menuDateiExit);
      menuBar.add(menuDatei);
      setTitle("Glücksbingo");
      setJMenuBar(menuBar);
      con.add(jp1,"South");con.add(jp2);
      jp1.add(b1);jp1.add(b2);jp1.add(b3);
      b1.addActionListener(this);
      b2.addActionListener(this);
      b3.addActionListener(this);
      this.addWindowListener
      (
      new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
      Menue.this.windowClosed();
      }
      }
      );
      for (int i = 0; i < atext.length; i++)
      {
      atext[i] = new JTextField();
      }
      LayoutSeiten ls= new LayoutSeiten();
      ls.layouten(jp2,label,atext,spiel,scheinnr);

      }




      public void actionPerformed(ActionEvent e)
      {
      String cmg = e.getActionCommand();
      if (cmg.equals("Einfügen"))
      {
      try
      {
      dat= new Daten();
      dat.scheinnr=scheinnr.getText();
      dat.spiel =spiel.getText();
      for (int a=1;a<=10;a++)
      dat.tausend.add(atext[a].getText());
      for (int a=11;a<=20;a++)
      dat.jocker.add(atext[a].getText());
      for (int a=21;a<=30;a++)
      dat.zwanzig.add(atext[a].getText());
      for (int a=31;a<=50;a++)
      dat.fuenfzig.add(atext[a].getText());
      scheine.add(dat);
      loeschen();
      }
      catch (NullPointerException npe)
      {
      System.out.println(npe);
      }
      }
      else if (cmg.equals("<-"))
      {
      if(scheine.size()-1>=zeiger)
      {
      Daten dat=(Daten)scheine.elementAt(zeiger);
      if (dat.spiel.equals(spiel.getText()))
      {
      int a=0;
      for (Enumeration tau=dat.tausend.elements();tau.hasMoreElements();)
      {
      System.out.println(""+tau.nextElement());
      a++;
      }
      for (Enumeration jo=dat.jocker.elements();jo.hasMoreElements();)
      {
      System.out.println(""+jo.nextElement());
      a++;
      }
      for (Enumeration zw=dat.zwanzig.elements();zw.hasMoreElements();)
      {
      System.out.println(""+zw.nextElement());
      a++;
      }
      for (Enumeration fu=dat.fuenfzig.elements();fu.hasMoreElements();)
      {
      System.out.println(""+fu.nextElement());
      a++;
      }
      zeiger++;

      }else
      {
      zeiger++;
      }
      }
      }
      else if (cmg.equals("->"))
      {
      if(scheine.size()-1>=zeiger)
      {
      Daten dat=(Daten)scheine.elementAt(zeiger);
      if (dat.spiel.equals(spiel.getText()))
      {
      int a=0;
      for (Enumeration tau=dat.tausend.elements();tau.hasMoreElements();)
      {
      atext[a].setText(""+tau.nextElement());
      a++;
      }
      for (Enumeration jo=dat.jocker.elements();jo.hasMoreElements();)
      {
      atext[a].setText(""+jo.nextElement());
      a++;
      }
      for (Enumeration zw=dat.zwanzig.elements();zw.hasMoreElements();)
      {
      atext[a].setText(""+zw.nextElement());
      a++;
      }
      for (Enumeration fu=dat.fuenfzig.elements();fu.hasMoreElements();)
      {
      atext[a].setText(""+fu.nextElement());
      a++;
      }
      zeiger++;

      }else
      {
      zeiger++;
      }
      }
      }
      else if (cmg.equals("HD-Öffnen"))
      {
      /* try
      {
      FileInputStream file= new FileInputStream(FILENAME);
      ObjectInputStream ob= new ObjectInputStream(file);
      scheine.removeAllElements();
      scheine.addElements(ob.readObject());
      }
      catch (IOException ioe)
      {
      System.out.println(ioe);
      }*/
      }
      else if (cmg.equals("HD-Speichern"))
      {
      try
      {
      FileOutputStream file= new FileOutputStream(FILENAME);
      ObjectOutputStream ob= new ObjectOutputStream(file);
      ob.writeObject(scheine);
      ob.close();
      }
      catch (IOException ioe)
      {
      System.out.println(ioe);
      }
      }
      else if (cmg.equals("Exit"))
      {
      System.exit(0);
      }



      }
      public void loeschen()
      {
      for (int a=1;a<=50;a++)
      {
      atext[a].setText("");
      }
      }
      protected void windowClosed()
      {
      System.exit(0);
      }
      }


      hmmm, irgendwie sind die einrückungen nun stark verzogen.. sorry, hoffe einigermassen lesbar.

      grüße von andy

  2. Antwort von nach einer Stunde 0 hilfreich
    Re: NullPointerException

    Ändere mal bitte in catch (NullPointerException npe) {
    npe.printStackTrace();
    }
    Und gib uns mal das Ergebnis. Daran siehtst du genau wo die Exception herkommt.

    Micha

    • Antwort von nach einer Stunde 0 hilfreich
      Nochwas

      Ich habe aber ne Vermutung, gib mal bitte noch die Klasse Daten (zumindest aber mal die Variablendefinitionen und den Konstruktor) durch.

      Übrigends, direkter Zugriff auf Variablen macht man nicht (dat.tausend. ...) sauberer wäre dat.getTausend().machwas
      oder gleich ne Mthode die das intern regelt.

      Daher meine Vermutung der Exception, ich vermute "tausend" ist noch null und du rufst add()

      Micha, der nicht gefunden hat dass man editieren kann

      • Antwort von nach einer Stunde 0 hilfreich
        Re: Nochwas

        ja sehe ich ein.. indirekter variablen zugriff... hmmm, ok...
        hatte vor einiger zeit schon mal ein kleines prog. geschrieben zur adressen speicherung.. da hatte ich es genauso gemacht (vom code her), nur der einzige unterschied war dass ich in der class daten keine vectoren genommen hatte, sondern nur string varis...
        brauche hier aber vectoren, weil ich gern 9-10 zahlen pro vector speichern möchte. könnte es auch über eine mysql datenbang anbindung regeln. nur kenne ich mich da nicht so toll aus und halte ich in diesem fall für übertrieben da das prog. nur für mich sein soll.. laufzeit und datenvolumen sind egal..
        danke dir für deine hilfe :)
        andy [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

        • Antwort von nach einem Tag 0 hilfreich
          Re^2: Nochwas

          Herzlichen Dank an euch für die nette Hilfe, es Funkt....

          Wünsche euch alles gute für das neue Jahr..

          liebe Grüße von andy

      • Antwort von nach 15 Stunden 0 hilfreich
        Re: Nochwas

        moin moin...

        habe mal die class daten umgestellt. alle vectoren raus und dafür string-arrays rein.
        nun klappt das reinschreiben in die "daten-struktur", bekomme aber nun diesen nullpointerexception beim reinschreiben der class daten in den vector scheine "scheine.add(dat);"..
        verstehe das alles nicht, was mach ich denn nur für einen gedanklichen fehler?
        achja, hab auch alle zähler und so bei 0 beginnen lassen, was (ich weiss es ja) bei java üblich ist...

        • Antwort von nach 16 Stunden 0 hilfreich
          Re^2: Nochwas

          moin moin...
          verstehe das alles nicht, was mach ich denn nur für einen
          gedanklichen fehler?
          Die Vektoren sind alle null. Ein Zugriff auf Methoden eines
          nicht initialisierten Objektes fuehrt zu einer NPE.
          Du musst die Vektoren erstmal initialisieren, z.B. im Konstruktor
          der Klasse Daten.

          public class Daten {
          private Vector vec;
          public Daten() {
          vec = new Vector();
          }
          }
          

          Gruss, Patrick

    • Antwort von nach einer Stunde 0 hilfreich
      Re^2: NullPointerException

      hier die class daten:

      import java.util.*;


      public class Daten
      {
      String scheinnr,spiel;
      static Vector tausend,jocker,zwanzig,fuenfzig;
      }

      und die fehlerausgabe:

      java.lang.NullPointerException
      at Menue.actionPerformed(Menue.java:103)
      at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
      at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
      at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
      at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
      at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
      at java.awt.Component.processMouseEvent(Component.java:6038)
      at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
      at java.awt.Component.processEvent(Component.java:5803)
      at java.awt.Container.processEvent(Container.java:2058)
      at java.awt.Component.dispatchEventImpl(Component.java:4410)
      at java.awt.Container.dispatchEventImpl(Container.java:2116)
      at java.awt.Component.dispatchEvent(Component.java:4240)
      at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
      at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
      at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
      at java.awt.Container.dispatchEventImpl(Container.java:2102)
      at java.awt.Window.dispatchEventImpl(Window.java:2429)
      at java.awt.Component.dispatchEvent(Component.java:4240)
      at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
      at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
      at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
      at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
      at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

      wie geschrieben bin ich anfänger und kann irgendwie nicht viel mit der fehlerausgabe anfangen, sorry...
      entschuldige bitte auch die etwas konfuse programmierung.. okok, zusammenschusterung :)) [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]



Keine passende Antwort gefunden? Jetzt eigene Frage stellen!