Employee emp = null;
int searchVal1 = (StringUtils.isNotBlank(tab2textField.getText())) ? Integer.parseInt(tab2textField.getText()) : 0;
String searchVal2 = tab2textField2.getText();
String searchVal3 = tab2textField3.getText();
ArrayList<Employee> arraylist = null;
ArrayList<Employee> finalarraylist = null;
//add to a new arraylist
try
{
FileInputStream fin = new FileInputStream("employeeal.ser");
ObjectInputStream in = new ObjectInputStream(fin);
arraylist = (ArrayList) in.readObject();
Iterator<Employee> it = arraylist.iterator();
while(it.hasNext())
{
emp = it.next();
System.out.println("First Name: " + emp.getFname());
System.out.println("Last Name: " + emp.getLname());
System.out.println("ID: " + emp.getId());
int intval = emp.getId();
String stringf = emp.getFname();
String stringl = emp.getLname();
//if(emp.getId() == searchVal1 || emp.getFname() == searchVal2 || emp.getLname() == searchVal3)
//if((emp.getId() == searchVal1) || (emp.getFname()) == "a") || (emp.getLname() == "a"))
if(emp.getId() == searchVal1 || (emp.getFname()).equals(searchVal2) || (emp.getLname()).equals(searchVal3))
{
//finalarraylist.add(emp);
//finalarraylist.add(new Employee(emp.getId(), emp.getFname(), emp.getLname()));
finalarraylist.add(new Employee(intval, stringf, stringl));
System.out.println("added");
}
else
{
System.out.println("NOT added!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
}
}
in.close();
fin.close();
}catch(IOException e)
{
e.printStackTrace();
}catch(ClassNotFoundException e2)
{
System.out.println("Class not found");
e2.printStackTrace();
}
所以我试图从另一个列表中列出一个列表,但是当我到达这一行时:
finalarraylist.add(new Employee(intval, stringf, stringl));
它崩溃并且说空指针,但是一个arraylist没有固定的存储空间,所以我不知道为什么我得到一个空指针异常。
First Name: rewer
Last Name: erw
ID: 2342
NOT added!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
First Name: hue
Last Name: huer
ID: 34343
NOT added!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
First Name: hueer
Last Name: huer
ID: 34343
NOT added!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
First Name: hueer
Last Name: huer
ID: 34343565
NOT added!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
First Name: a
Last Name: a
ID: 1
这是输出。它在打印之前崩溃了,并且添加了#34;。
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at TextField.actionPerformed(Test.java:676)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
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:6527)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6292)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4883)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4705)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2739)
at java.awt.Component.dispatchEvent(Component.java:4705)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:719)
at java.awt.EventQueue$4.run(EventQueue.java:717)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
答案 0 :(得分:2)
快速查看代码......
ArrayList<Employee> finalarraylist = null;
//...
// finalarraylist still null...
try
{
//...
// finalarraylist still null
while(it.hasNext())
{
//...
// finalarraylist still null
if(emp.getId() == searchVal1 || (emp.getFname()).equals(searchVal2) || (emp.getLname()).equals(searchVal3))
{
//...
// finalarraylist still null
finalarraylist.add(new Employee(intval, stringf, stringl));
在声明finalarraylist
和尝试使用if之间,你实际上从未创建过它的实例......
如果你遇到这个问题就会进行两分钟的调试。这是发现IDE(以及Java的)调试器的强大功能......