title: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException - Bad postcode
body: <p>Could somebody please explain why I keep getting this error? The program is an addressbook and will accept a business address or a personal address. Every time I add an address I keep getting the error Bad postcode: 'ca14 3xn' followed by Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException. Heres my code (I left out a few methods):</p>
  
  <pre><code>class AddressBookGUI extends JFrame
    implements ActionListener
  {
      private ExtendedAddressBook addressbook;
  
   /**
       * Constructor 
       */
      public AddressBookGUI()
      {
          addressbook = new ExtendedAddressBook();
      }
  
    public AddressBookGUI(String Title)
    {
      //Removed code    }
  
    private void showFrame()
    {
      //Removed code
    }
  
    private void makeFrame()
    {
      //Removed code
  
    }
  
  
    public void actionPerformed(ActionEvent e)
    {
      if ((e.getSource() instanceof JButton))
      {
        //Removed some code
  
        if (e.getSource() == btnEnter)
        {   
            if (entryType == "Personal")
            {
                //Check if fields are empty                 }
                else {
                     String firstName = this.fldFirstName.getText();
                     String lastName = this.fldLastName.getText();
                     String street = this.fldStreet.getText();
                     String town = this.fldTown.getText();
                     String postcode = this.fldPostCode.getText();
                     String dob = this.fldVariable.getText();
                     addressbook.add(new Personal(firstName, lastName, street, town, postcode, dob));
                  }
              }
          }
      }
     }
  
  }
  </code></pre>
  
  <p>Entry class:</p>
  
  <pre><code>   public Entry(String paramString1, String paramString2, String paramString3, String paramString4, String paramString5)
   {
      this.firstName = paramString1;
      this.lastName = paramString2;
      this.street = paramString3;
      this.town = paramString4;
      if (paramString5.matches("[A-Z]{2}[0-9]{1,2} [0-9]{1,2}[A-Z]{2}")) {
         this.postCode = paramString5;
      } 
      else {
         System.err.printf("Bad postcode: '%s'\n", new Object[] { paramString5 });
         this.postCode = "???";
      }
  }
  </code></pre>
  
  <p>AddressBook class:</p>
  
  <pre><code>public String add(Entry paramEntry)
  {
  if (paramEntry == null)
    return "Error: null entry";
  if (this.data.contains(paramEntry)) {
    return "Error: this entry already in the book";
  }
  boolean bool = this.data.add(paramEntry);
  if (bool) {
    return " entry added";
  }
  return "entry could not be added";
  }
  </code></pre>
  
  <p>ExtendedAddressBook:</p>
  
  <pre><code>public class ExtendedAddressBook extends AddressBook
  {
  
  public String getPersonal()
  {
      String PersonalList = "";
      ArrayList&lt;Entry&gt; allEntries = getAddressBook();
      for ( Entry entry : allEntries )
      {
          if ( entry instanceof Personal )
          {
              PersonalList = PersonalList + entry.toString();
          }
      }
      return PersonalList;
  }
  
  }
  </code></pre>
  
  <p>Error occurs on line addressbook.add(new Personal(firstName, lastName, street, town, postcode, dob));
  Here is the trace:</p>
  
  <p>Bad postcode: 'ca14 3xn'</p>
  
  <pre><code>Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
  at AddressBookGUI.actionPerformed(AddressBookGUI.java:314)
  at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
  at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
  at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
  at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
  at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
  at java.awt.Component.processMouseEvent(Component.java:6505)
  at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
  at java.awt.Component.processEvent(Component.java:6270)
  at java.awt.Container.processEvent(Container.java:2229)
  at java.awt.Component.dispatchEventImpl(Component.java:4861)
  at java.awt.Container.dispatchEventImpl(Container.java:2287)
  at java.awt.Component.dispatchEvent(Component.java:4687)
  at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
  at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
  at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
  at java.awt.Container.dispatchEventImpl(Container.java:2273)
  at java.awt.Window.dispatchEventImpl(Window.java:2719)
  at java.awt.Component.dispatchEvent(Component.java:4687)
  at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729)
  at java.awt.EventQueue.access$200(EventQueue.java:103)
  at java.awt.EventQueue$3.run(EventQueue.java:688)
  at java.awt.EventQueue$3.run(EventQueue.java:686)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
  at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
  at java.awt.EventQueue$4.run(EventQueue.java:702)
  at java.awt.EventQueue$4.run(EventQueue.java:700)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
  at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
  at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
  at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
  at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
  at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
  at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
  </code></pre>