你如何检查java类中的构造函数值?

时间:2013-05-25 21:22:24

标签: java

我有一个MyDate课程,在这个课程中,我需要检查年份(y)是否是闰年。我的代码如下:

public class MyDate
{
    private int d;
    private int m;
    private int y;

//constructor

public MyDate(int d, int m, int y)
    {
    this.d = d;
    this.m = m;
    this.y = y;
    }

    public void setDay(int d)
    {
        this.d = d;
    }

    public int getDay()
    {
        return d;
    }

    public void setMonth(int m)
    {
        this.m = m;
    }

    public int getMonth()
    {
        return m;
    }

    public void setYear(int y)
    {
        this.y = y;
    }   

    public int getYear()
    {
        return y;
    }



    public void setDate(int d, int m, int y)
    {
        setDay(d);
        setMonth(m);
        setYear(y);
    }

这里代替(int y),我需要使用getYear()吗?

public static boolean isLeap(int y) {
  if (y % 4 != 0) {
    return false;
  } else if (y % 400 == 0) {
    return true;
  } else if (y % 100 == 0) {
    return false;
  } else {
    return true;
  }
}

//喜欢这个?

public static boolean isLeap(getYear()) {
  if (y % 4 != 0) {
    return false;
  } else if (y % 400 == 0) {
    return true;
  } else if (y % 100 == 0) {
    return false;
  } else {
    return true;
  }
}

3 个答案:

答案 0 :(得分:1)

您的方法是静态的,因此如果方法必须为static

,则应使用以下方法
public static boolean isLeap(int y) 

因为你不能在静态方法中调用getYear()。它不属于一个对象,它属于一个类。 如果可以将方法更改为非静态

使用

public boolean isLeap(){
int y = this.getYear();
....
...
} 

答案 1 :(得分:0)

第二个版本没有通过编译:

public static boolean isLeap(getYear()) {

看看这个。首先,你不能在其他方法的声明中调用方法。其次,你不能从静态方法调用实例方法。

您可以按如下方式更改方法签名:

public boolean isLeap() {
    // here you can access either instance field y or method getYear()
}

答案 2 :(得分:0)

不要为此编写自己的课程。 java.util.GregorianCalendar执行您的课程可以执行的所有操作,并且它有一个名为isLeapYear()的方法。