有人可以解释为什么我不断收到这个错误吗?该程序是一个地址簿,将接受公司地址或个人地址。每次添加地址时,我都会收到错误邮政编码错误:'ca14 3xn',然后是线程“AWT-EventQueue-0”java.lang.NullPointerException 中的异常。这是我的代码(我省略了一些方法):
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));
}
}
}
}
}
}
入职类:
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 = "???";
}
}
地址簿类:
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";
}
扩展地址簿:
public class ExtendedAddressBook extends AddressBook
{
public String getPersonal()
{
String PersonalList = "";
ArrayList<Entry> allEntries = getAddressBook();
for ( Entry entry : allEntries )
{
if ( entry instanceof Personal )
{
PersonalList = PersonalList + entry.toString();
}
}
return PersonalList;
}
}
线上出现错误 addressbook.add(new Personal(firstName, lastName, street, town, postcode, dob)); 这是跟踪:
错误的邮政编码:'ca14 3xn'
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)