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

2 番目のバージョンはコンパイルに合格しません。

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 に答える