2013-05-08 101 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

相关问题