-2

我有这段代码,它创建一个textfield和一个button让用户搜索数组中的数据:

//Creates a form to search data, list for it and buttons to sort the list.
            rightPanel.add(Box.createRigidArea(new Dimension(20, 20)));
            final TextField searchTextField;
            searchTextField = new TextField ();
            rightPanel.add(searchTextField);
            rightPanel.add(Box.createRigidArea(new Dimension(20, 20)));
            JButton searchConfirmButton = new JButton("Search");
            rightPanel.add(searchConfirmButton);
            searchConfirmButton.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e)
                {
                    try {
                        search = searchTextField.getText();
                        int index = Arrays.asList(data).indexOf(search);
                        for (String result : data) {
                            if (result.contains(search)) {
                                System.out.println(result);
                                System.out.println(index);
                            }
                        }
                    } catch (NullPointerException e1) {

                    }
                }
            });

但是每当我搜索数据时,无论它是否存在,程序都会返回一个nullpointerexception带有以下内容的我:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at program.Program$4$1.actionPerformed(Program.java:233)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

在这种情况下,第 233 行包含此行if (result.contains(search)) {

4

1 回答 1

1

data 看起来像一个数组类型,可以保存数据值或空指针。你应该试试:

System.out.println("Found index: " + index);
for (String result : data) {
    if (result != null && result.contains(search)) {
        System.out.println("Found result: " + result);
    }
    //If you are still confused than the right else here will help.
}

例如,如果您将一个包含两个空格的字符串逐个空格分开,那么根据 split() 的函数参数,您最终可能会在该位置得到一个空字符串,您需要有效地跳过它。

于 2013-11-10T18:57:30.047 回答