2014-02-09 43 views
-3

我真的不明白爲什麼我會在這一個上得到一個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

幾乎所有的東西都可能會拋出一個。它發生在哪條線上? – Obicere

+3

我們可以得到堆棧跟蹤嗎? – Pankaj

+0

@Obicere看起來我們必須預測堆棧跟蹤:P –

回答

1

forestOwnerCtr.createForest(name,location,squaremetre,treesorts,price);請檢查這一行。對象實例化可能有問題。從你上面發佈的內容可以看出這一點。

+0

你的意思是什麼? –

+1

這意味着您的代碼如下所示: abc。方法(); abc爲null,那麼abc必須引用一個對象實例,以便您調用其方法或訪問字段。例如,你必須把某些東西分配給'abc'(除了空之外的東西),比如abc = new ABC();或者這樣。 – kiki

+0

在我們的例子中forestOwnerCtr必須被分配一些不爲null的東西。希望這可以幫助你。如果您覺得有用,請接受我的回答。 – kiki

0

如果任何textField_ {name或location或squaremetre或treesorts或price}爲空,您可以獲得NPE。

在這種情況下,當您在這些引用上調用getText()時,您將獲得NPE。

  1. 以下線路也會拋出NPE如果squaretemp或pricetemp是調用的getText()方法在非空textField_squaremetre & textField_price和gettext的後空()返回的東西給他們。

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

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

這將是巨大的,如果你可以調試代碼,知道你所得到的NPE。

相關問題