谁能发现为什么我有一个nullpointerexception?

时间:2014-02-09 18:38:27

标签: java nullpointerexception

我真的不明白为什么我会在这个问题上得到nullpointerexception。几个小时以来一直在努力使用这段代码,真的无法理解......

希望您看到任何内容,如果您需要更多代码,请告诉我。

public void createForest() {
        String name = textField_name.getText();
        String location = textField_location.getText();
        String squaretemp = textField_squaremetre.getText();
        String treesorts = textField_treesorts.getText();
        String pricetemp = textField_price.getText();

        // Convert
        double squaremetre = Double.parseDouble(squaretemp);
        double price = Double.parseDouble(pricetemp);

        forestOwnerCtr.createForest(name, location, squaremetre, treesorts, price);
        forestOwnerCtr.printForestList();
    }

我在控制台中的错误是:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at GUI.CreateForest.createForest(CreateForest.java:131)
at GUI.CreateForest$2.actionPerformed(CreateForest.java:104)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6414)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
at java.awt.Component.processEvent(Component.java:6179)
at java.awt.Container.processEvent(Container.java:2084)
at java.awt.Component.dispatchEventImpl(Component.java:4776)
at java.awt.Container.dispatchEventImpl(Container.java:2142)
at java.awt.Component.dispatchEvent(Component.java:4604)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4618)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4279)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4209)
at java.awt.Container.dispatchEventImpl(Container.java:2128)
at java.awt.Window.dispatchEventImpl(Window.java:2492)
at java.awt.Component.dispatchEvent(Component.java:4604)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:717)
at java.awt.EventQueue.access$400(EventQueue.java:82)
at java.awt.EventQueue$2.run(EventQueue.java:676)
at java.awt.EventQueue$2.run(EventQueue.java:674)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:690)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:687)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

如果我的System.out.println非所有变量都是空的。您认为问题出在ForestOwnerCtr中吗?或?

在制作断点并以此结束后:

forestOwnerCtr.createForest(name, location, squaremetre, treesorts, price);

我的控制器看起来像这样

public void createForest(String name, String location, double squaremetre, String treesorts, double price) {
    forestCon.createForest(name, location, squaremetre, treesorts, price);
}

这会将我们发送到看起来像这样的容器:

public void createForest(String forName, String forLocation, double forSquareMetre, String forNatureOfTrees, double forPrice)
    {
        Forest forestnew = new Forest(forName, forLocation, forSquareMetre, forNatureOfTrees, forPrice);
        forests.add(forestnew);
    }

2 个答案:

答案 0 :(得分:1)

forestOwnerCtr.createForest(name,location,squaremetre,treesorts,price);请检查此行。对象实例化可能有问题。从你上面发布的内容中可以看出这一点。

答案 1 :(得分:0)

如果textField_ {name或location或squaremetre或treesorts或price}中的任何一个为null,则可以获得NPE。

在这种情况下,当您在这些引用上调用getText()时,您将获得NPE。

  1. 如果在非空textfield_squaremetre&上调用getText()方法后,如果squaretemp或pricetemp为null,则下面的行也可以抛出NPE textField_price和getText()为它们返回了一些内容。

    double squaremetre = Double.parseDouble(squaretemp); double price = Double.parseDouble(pricetemp);

  2. 你也可以归入NumberFormatException这些字符串是空白的。

  3. 如果您可以调试代码以了解您获得NPE的位置,那就太棒了。