0

我有一个 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;
  }
}
4

3 回答 3

1

您的方法是静态的,因此如果该方法必须是,则应使用以下方法static

public static boolean isLeap(int y) 

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

利用

public boolean isLeap(){
int y = this.getYear();
....
...
} 
于 2013-05-25T21:29:22.497 回答
0

第二个版本编译不通过:

public static boolean isLeap(getYear()) {

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

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

public boolean isLeap() {
    // here you can access either instance field y or method getYear()
}
于 2013-05-25T21:31:01.273 回答
0

不要为此编写自己的课程。 java.util.GregorianCalendar做了你的类能做的所有事情,它有一个名为isLeapYear().

于 2013-05-25T21:39:04.867 回答