我有一个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;
}
}
答案 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()
的方法。