2013-05-08 189 views
2

當我在構造函數中聲明方法時,出現錯誤「; expected」。不知道爲什麼。你能幫我理解嗎?在構造函數中聲明方法

public class Reservation { 
Date arrivalDate = new Date(); 
    Date departDate = new Date(); 
    Reservation(Date arrDate, Date deptDate) 
    { 
    arrivalDate = arrDate; 
    departDate = deptDate; 
    long nightsStay(); 
    } 
void nightsStay() 
    { 
     long days = (departDate.getTime()-arrivalDate.getTime())/(24*60*60*1000); 
    } 

我得到錯誤的行,我宣佈long nightsStay();

+0

什麼應該'long nightsStay();'做什麼?有錯誤。 – 2013-05-08 00:52:40

+0

它應該存儲離開和到達日期之間的天數 – user2225994 2013-05-08 00:55:18

回答

2

你不能這樣做

long nightsStay(); 

如果你定義你需要一個名字,然後你可以將價值指向它的變量,但你缺少的名字。

public class Reservation { 
    Date arrivalDate = new Date(); 
    Date departDate = new Date(); 
    long nightsStay; // add that line 

    Reservation(Date arrDate, Date deptDate) 
    { 
     arrivalDate = arrDate; 
     departDate = deptDate; 
     nightsStay = nightsStay(); // change that line 
    } 

    long nightsStay() 
    { 
     long days = (departDate.getTime()-arrivalDate.getTime())/(24*60*60*1000); 
    } 
} 

例子:

long l = 5; //variable l gets value 5; 
l = nightsStay(); // calling method nightsStay and storing the result in l; 
long nightsStay(); // is neither one 

如果你想方法nightsStay()返回的東西,那麼你必須從void改變返回類型爲你喜歡的返回類型,這是你的情況long

+0

@juergen ......謝謝..它的工作。你能解釋一下我寫的代碼有什麼問題嗎?我不能只是在構造中聲明一個方法。 – user2225994 2013-05-08 00:59:11

+0

有一個命名衝突 - 'nightsStay'不能同時是'long'和'void()'。 – michaelb958 2013-05-08 01:00:21

+0

@ michaelb958:謝謝指出。 – 2013-05-08 01:02:08

相關問題