2011-04-29 38 views
1

我剛學習Java並嘗試創建一個類的數組。當從數組中調用一個方法時,它會崩潰。如果不是陣列,則可以正常工作當我嘗試從對象數組中調用方法時,我的Java代碼崩潰了

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    cDate test=new cDate(); 
    test.setDay(0); 
    mAppoitments = new cDate[24]; 
    // crashes why????? 
    mAppoitments[0].setDay(0); 

回答

9

您未填充陣列中的對象。你必須:

cDate[0] = test; 

否則你在索引0有null,你不能在null調用任何東西。

而下一次你問一個問題,給所有需要的細節:

  • 什麼是異常消息和堆棧跟蹤。 「崩潰」幾乎意味着沒有任何東西
  • 告訴我們什麼是你的變量沒有在代碼片段中初始化。你可以看到一個答案,告訴你修復一個本地聲明,這可能是一個實例變量。
+0

HiThank你,我以爲mAppoitments =新CDATE [24]; 正在設置, – 2011-05-02 11:38:15

5

您有24個物體的陣列,每個物體都設置爲null。在調用方法之前,您需要初始化每個方法。

-1
cDate myAppointments = new cDate[24]; 

嘗試聲明變量類型

+0

如果這是問題,它甚至不會編譯。真正的問題是他的數組中充滿了'null'引用。 – 2011-04-29 15:24:30

4

你初始化數組的數組而不是對象。嘗試在使用它們之前初始化這些元素。

mAppoitments = new cDate[24]; 
for (int i = 0; i < mAppoitments.length; i++) 
    mAppoitments[i] = new cDate(); 
mAppoitments[0].setDay(0); 
+0

謝謝你,我認爲mAppoitments = new cDate [24]初始化了數組中的所有對象 – 2011-05-02 11:40:15

1
final int COUNT= 24; 

mAppoitments = new cDate[COUNT]; 
for(int i = 0 ; i < COUNT ; ++i) { 
    mAppoitments[i] = new cDate(); 
    mAppoitments[i].setDay(0); 
} 
相關問題