2013-04-24 72 views
0

我不知道爲什麼,但是這行代碼給出了NullPointerException。我搜索創建一個用戶obj數組。在Java中,但是,我再也找不到任何問題。對象數組原因NullPointerException Java

private State[] states; 
.  
. 
. 
private void initializeStates() 
     { 
      states = new State[ stateNames.length ]; // Throws NullPointerException 

     for(int i = 0; i < stateNames.length; i++) 
     { 
      states[i] = new State(); 
      states[i].setName(stateNames[i]); 
      states[i].setColor(stateColors.getColor()); 
     } 
    } // End of initializeStates() 

這裏是類:

public class State 
{ 
    private String stateName; 
    private String color; 
    private boolean isStartState; 
    private boolean isFinalState; 

     State() 
     { 
      stateName = new String(); // Can this line cause nullPtrException? 
      color = new String(); // Can this line cause nullPtrException? 
      isStartState = false; 
      isFinalState = false; 
     } 

     public void setName(String name){ stateName = name; } 
     public void setColor(String clr) { color = clr; } 
     public void makeStart() { isStartState = true; } 
     public void makeFinal() { isFinalState = true; } 

    } 
+0

你能後的堆棧跟蹤和指向異常的線? – 2013-04-24 22:37:25

回答

5

如果該行拋出異常:

states = new State[ stateNames.length ]; // Throws NullPointerException 

...那麼問題是,stateNamesnull。你不會像其他任何代碼一樣。

您還沒有顯示stateNames被宣告或初始化的位置,但這是您下一步應該看的地方。

順便說一句,這一點:

stateName = new String(); 

...是低效毫無理由。只需使用一個空字符串文字:

stateName = ""; 

(或更好,採取相應的初始值作爲構造函數的參數。)