Results 1 to 11 of 11
  1. #1
    warchieflll is offline Member
    Join Date
    Dec 2010
    Posts
    55
    Rep Power
    0

    Question NullPointer Exeption, but why?

    Greetings all!

    I've got a nullpointerexeption (using eclipse) at this line:

    MuseumPaneel.java
    At the top:

    Java Code:
    	MuseumRegistratie registratie;
    halfway:
    Java Code:
    registratie.checkIn(nummer, uurInt, minInt); // NullPointer
    In the registration class, the method checkin:

    MuseumRegistratie.java
    Java Code:
    	public void checkIn (String kaartNummer, int aankomstUur, int aankomstMinuten)
    	{
    		bezoeker1 = new MuseumBezoeker(kaartNummer, aankomstUur, aankomstMinuten);
    		bezoekerArray.add(bezoeker1);
    		System.out.println( "hier komt vergelijking in kaartnummers" );
    	}
    Hope someone could help me :D

  2. #2
    gcalvin is offline Senior Member
    Join Date
    Mar 2010
    Posts
    953
    Rep Power
    5

    Default

    Your first line declares your registratie object, but does not initialize it. At that point, it is a null pointer -- a pointer to nothing. When you try to call a method on a null pointer, you get a NullPointerException.

    -Gary-

  3. #3
    warchieflll is offline Member
    Join Date
    Dec 2010
    Posts
    55
    Rep Power
    0

    Default

    Hmm... but I coudn't say something like:

    MuseumRegistratie regestratie = new MuseumRegistratie? If I try I get StackOverflowError...?

  4. #4
    gcalvin is offline Senior Member
    Join Date
    Mar 2010
    Posts
    953
    Rep Power
    5

    Default

    The Java new operator is generally followed by an object constructor call. What does a constructor call look like?

    -Gary-

  5. #5
    warchieflll is offline Member
    Join Date
    Dec 2010
    Posts
    55
    Rep Power
    0

    Default

    Eeh... what ya mean? I'll post the two classes for you:

    MuseumRegistratie.java (not finished yet)
    Java Code:
    package bezoekersMuseum;
    
    import java.util.ArrayList;
    
    public class MuseumRegistratie
    
    {
    	private int gesommeerdeTijd;
    	public int aantalBezoekers = 0;
    	MuseumPaneel paneel = new MuseumPaneel();
    	public ArrayList<MuseumBezoeker> bezoekerArray;
    	MuseumBezoeker bezoeker1;
    	
    	public void Museumregistratie()
    	{
    	    bezoekerArray = new ArrayList<MuseumBezoeker>();
    	    bezoekerArray.add(paneel.bezoeker1);
    	}
    	
    	public void checkIn (String kaartNummer, int aankomstUur, int aankomstMinuten)
    	{
    		bezoeker1 = new MuseumBezoeker(kaartNummer, aankomstUur, aankomstMinuten);
    		bezoekerArray.add(bezoeker1);
    		System.out.println( "hier komt vergelijking in kaartnummers" );
    	}
    	
    	public void checkOut (String kaartNummer, int aankomstUur, int aankomstMinuten)
    	{
    		
    	}
    	
    	public int getAantalAanwezig()
    	{
    		return aantalBezoekers;
    	}
    	
    	public void sluitRegistratie()
    	{
    		
    	}
    }
    MuseumPaneel (not finished yet)
    Java Code:
    package bezoekersMuseum;
    
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.ArrayList;
    
    public class MuseumPaneel extends JPanel implements ActionListener
    {
    	private JTextField kaartnummer, uurField, minField;
    	private JButton binnen, vertrek, aanwezig, sluiting;
    	public String nummer, uren, minuten;
    	public int uurInt, minInt;
    	MuseumBezoeker bezoeker1;
    	MuseumRegistratie registratie = new MuseumRegistratie();
    	
    	public MuseumPaneel()
    	{	    
    		add(new JLabel("Kaartnummer"));
    		kaartnummer = new JTextField ("",30);
    		add(kaartnummer);
    				
    		add(new JLabel("Tijdstip van aankomst of vertrek "));
    		uurField = new JTextField ("",3);
    		add(uurField);
    		
    		add(new JLabel("uur en "));
    		minField = new JTextField ("",3);
    		add(minField);
    
    		add(new JLabel("minuten"));
    		binnen = new JButton ("Komt binnen");
    		binnen.addActionListener(this);
    		add(binnen);
    
    		vertrek = new JButton ("Vertrekt");
    		vertrek.addActionListener(this);
    		add(vertrek);
    		
    		aanwezig = new JButton ("Aantal aanwezig");
    		aanwezig.addActionListener(this);
    		add(aanwezig);
    		
    		sluiting = new JButton ("Sluiting");
    		sluiting.addActionListener(this);
    		add(sluiting);
    	}
    
    	public void actionPerformed(ActionEvent e)
    	{
    		if (e.getSource() == binnen)
    		{
    			uren = uurField.getText();
    			uurInt = Integer.parseInt(uren);
    
    			minuten = minField.getText();
    			minInt = Integer.parseInt(minuten);
    
    			nummer = kaartnummer.getText();
    
    			registratie.checkIn(nummer, uurInt, minInt); // NullPointer
    			
    			System.out.println(nummer + " " + uurInt + " " + minInt);
    			kaartnummer.setText("");
    			uurField.setText("");
    			minField.setText("");
    		}
    		if (e.getSource() == vertrek) // nummer wordt niet apart gelezen, maar alleen het laatste nummer wordt gelezen...!
    			// hoe de array doorlopen uit klasse MuseumRegistratie?
    		{
    				String vertreknummer = kaartnummer.getText();
    				System.out.println("nummer: " + nummer + " vertreknummer : " + vertreknummer );
    
    		}
    		if (e.getSource() == aanwezig)
    		{
    			System.out.println("aanwezig");
    			JOptionPane.showMessageDialog(
    					null,
    					"Aantal aanwezige bezoekers: ",
    					"",
    					JOptionPane.WARNING_MESSAGE);
    		}
    		if (e.getSource() == sluiting)
    		{
    			System.out.println("sluiting");
    			JOptionPane.showMessageDialog(
    					null,
    					"Gemiddelde tijd dat een bezoeker aanwezig is: ",
    					"",
    					JOptionPane.WARNING_MESSAGE);
    		}
    	}
    }

  6. #6
    Tolls is offline Moderator
    Join Date
    Apr 2009
    Posts
    12,095
    Rep Power
    20

    Default

    In your MuseumRegistratie you have this:
    MuseumPaneel paneel = new MuseumPaneel();

    So when a new MuseumRegistratie object is created it will create a MuseumPaneel object.

    However in MuseumPaneel you have this:
    MuseumRegistratie registratie = new MuseumRegistratie();

    So when a MuseumPaneel object is created you create a new MuseumRegstratie object. Hence the StackOverflow. Creating a Registratie results in the creation of a Paneel which results in the creation of a Registratie...and so on.

  7. #7
    warchieflll is offline Member
    Join Date
    Dec 2010
    Posts
    55
    Rep Power
    0

    Default

    Ahh I see.. I've deleted the '= new MuseumPaneel'. Now I got a nullPointer at:

    bezoekerArray.add(bezoeker1);

    There is a 'bezoeker1 = new MuseumBezoeker(arg1, arg2, arg3);', so why here a nullpointer?

  8. #8
    Tolls is offline Moderator
    Join Date
    Apr 2009
    Posts
    12,095
    Rep Power
    20

    Default

    Actually, according to the code above, it's:
    bezoekerArray.add(paneel.bezoeker1);

    And now that you've removed the "new MuseumPaneel()", paneel is null.

    Essentially, if you want a Paneel to know about its parent Registratie (which seem to be your aim) then, in the contructor for the Registratie:
    Java Code:
    	public void Museumregistratie()
    	{
                paneel =  = new MuseumPaneel(this);
    	    bezoekerArray = new ArrayList<MuseumBezoeker>();
    	    bezoekerArray.add(paneel.bezoeker1);
    	}
    and add a constructor to MuseumPaneel that takes a Museumregistratie.

  9. #9
    warchieflll is offline Member
    Join Date
    Dec 2010
    Posts
    55
    Rep Power
    0

    Default

    Aaah, now you type it I see I must make a normal constructor, and not a void-constructor of course. Also the panel doesn't make the bezoeker1, but the registration do, and the panel only activates 'checkIn', where bezoeker1 is made.

    MuseumPaneel.java (gedeelte)
    Java Code:
    	public void actionPerformed(ActionEvent e)
    	{
    		if (e.getSource() == binnen)
    		{
    			uren = uurField.getText();
    			uurInt = Integer.parseInt(uren);
    
    			minuten = minField.getText();
    			minInt = Integer.parseInt(minuten);
    
    			nummer = kaartnummer.getText();
    
    [b]			registratie.checkIn(nummer, uurInt, minInt); // NullPointer fixed[/b]
    			
    			kaartnummer.setText("");
    			uurField.setText("");
    			minField.setText("");
    		}
    MuseumRegistratie.java (gedeelte)
    Java Code:
    	public void checkIn (String kaartNummer, int aankomstUur, int aankomstMinuten)
    	{
    		bezoeker1 = new MuseumBezoeker(kaartNummer, aankomstUur, aankomstMinuten);
    		bezoekerArray.add(bezoeker1);
    		for ( MuseumBezoeker bez : bezoekerArray)
    		{
    			if ( kaartNummer.equals( kaartNummer ) )
    			    System.out.println( "gelijk" );
    			else
    				System.out.println( "ongelijk " + kaartNummer );						
    		}
    		System.out.println(bezoekerArray);
    	}
    This seems to work, but it says the first in the array is null, and the first one afterwards is a real 'bezoeker'. Why is this first one 'null'?

  10. #10
    Tolls is offline Moderator
    Join Date
    Apr 2009
    Posts
    12,095
    Rep Power
    20

    Default

    In your MuseumRegistratie constructor you do this:
    bezoekerArray.add(paneel.bezoeker1);

    But bezoeker1 is null in the paneel.

  11. #11
    warchieflll is offline Member
    Join Date
    Dec 2010
    Posts
    55
    Rep Power
    0

    Wink

    Ahh I see! Your great :D. Now I've to figure out how to compare the String 'kaartNummer' by checkin, with the 'kaartNummer' what is entered for checking out... wish me luck xD

Similar Threads

  1. Nullpointer error
    By teppel in forum New To Java
    Replies: 0
    Last Post: 07-10-2010, 08:38 PM
  2. exeption haldling
    By sniffer139 in forum Threads and Synchronization
    Replies: 1
    Last Post: 04-23-2010, 09:38 AM
  3. NullPointer exception
    By bdario1 in forum New To Java
    Replies: 15
    Last Post: 03-17-2010, 04:44 AM
  4. null pointer exeption
    By mj23brm in forum New To Java
    Replies: 4
    Last Post: 02-10-2009, 11:50 PM
  5. NullPointer Exception
    By Preethi in forum New To Java
    Replies: 8
    Last Post: 02-06-2008, 03:40 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •