2016-04-14 51 views
0

您好我已經創建了下面的類不能訪問類的方法在Java中

public class Hour { 

    private long mTime; 
    private String mSummary; 
    private double mTemparature; 
    private String mIcon; 


    public long getTime() { 
     return mTime; 
    } 

    public void setTime(long time) { 
     mTime = time; 
    } 

    public String getSummary() { 
     return mSummary; 
    } 

    public void setSummary(String summary) { 
     mSummary = summary; 
    } 

} 

然後在另一個Java類我創建一個小時陣列,我想嘗試調用的函數setSummary,但是它不't work:

Hour[] hours = new Hour[data.length()]; 

hours.setSummary(test); 

它說無法解析方法setSummary。

我在這裏做錯了什麼?

感謝

回答

6

hours是一個數組不是Hour類的實例,這就是爲什麼你會得到編譯錯誤。要調用setSummary(),您需要創建一個Hour類的實例。可能是你想做的事是這樣的:

Hour[] hours = new Hour[data.length()]; 
hours[0] = new Hour(); 
hours[0].setSummary(test); 

:我認爲data.length()要麼char類型,shortbyteintdata.length() > 0

+0

@AndyTurner爲什麼?你的意思是'小時[0] =新小時();'在發佈的代碼是不夠的? – MikeCAT

+0

@MikeCAT gah - 誤讀了它。 OK,然後......在確保'data.length()> 0'之後:) –

+0

@AndyTurner ...並且'data.length()'的類型是'int',或者至少不是任何'long ','雙'或'浮動'。 – MikeCAT

2

hours是一個數組,並且幾乎沒有機會擁有setSummary

你可能想是這樣的:

for(int i = 0; i < hours.length; i++) { 
    (hours[i] = new Hour()).setSummary(test); 
} 
2

@Nant是正確的。你想要hours[i].setSummary(test)。如果要將其應用於陣列中的所有內容,請使用

for(Hour i : hours) 
{ 
    i.setSummary(test); 
} 
1

小時數是小時類型的數組。您可以調用各個元素的方法,例如

hours[0].setSummary(test); 

但不在陣列本身。爲了實例化一個小時,只需調用新:

Hour hour = new Hour(); 
hour.setSummary(test); 
+0

'hour [0]'在'Hour [] hours = new Hour [data.length()]之後是'null';'假設'data.length()'是正整數。注意'NullPointerException'。 – MikeCAT

0

在你給hours的例子是一個數組,數組不公開方法setSummary(String summary)

如果你想設置的彙總所有元素放入數組試試這個:

Hour[] hours = new Hour[data.length()]; 
// fill your array here 
for(Hour hour : hours){ 
    hour.setSummary(test); 
}