【问题标题】:declaring method inside a constructor在构造函数中声明方法
【发布时间】:2013-05-02 02:36:01
【问题描述】:

当我在构造函数中声明该方法时,我收到错误“;预期”。不知道为什么。你能帮我理解吗

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() 的那一行出现错误;

【问题讨论】:

  • long nightsStay(); 应该怎么做?有错误。
  • 它应该存储出发和到达日期之间的天数

标签: methods constructor


【解决方案1】:

你做不到

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

【讨论】:

  • @juergen...谢谢..它工作。你能解释一下我写的代码有什么问题吗?我不能只在构造函数中声明一个方法吗?
  • 存在命名冲突 - nightsStay 不能同时是 longvoid ()
  • @michaelb958 我尝试使用 long nightsStay();在构造函数内部并实现没有 void 的方法 - long nightsStay() 并返回天数。即便如此,在我声明此方法的构造函数内的行上,我仍然收到与“;预期”相同的错误
  • 知道了。我意识到我的错误。如果我声明没有返回类型的方法,它就可以工作。非常感谢您的回答并帮助我认识到我的错误
猜你喜欢
  • 1970-01-01
  • 2019-04-15
  • 1970-01-01
  • 1970-01-01
  • 2012-04-04
  • 1970-01-01
  • 2020-09-13
  • 2020-03-22
  • 2017-03-17
相关资源
最近更新 更多