4

私は、結果が真または偽のいずれかになるプログラムを作成するという学校の課題を持っています。年が閏年か否かです。私が現在抱えている問題は、パブリックブール値ではなくパブリック静的ブール値を使用していることです。これは私のコードです:

public class Assignment {

    static boolean isLeapYear;

    public static void main(String[] args)
    {        
        int year = 2000;
        isLeapYear(year);
    }
    public static boolean isLeapYear(int year) {
        if (((year/100)%4 == 0 && year%4 ==0) || (year % 400 == 0))
            isLeapYear = true;

        else
            isLeapYear = false;

        System.out.println(isLeapYear);

        return isLeapYear;
    }
}

int の年は現時点では 2000 年ですが、ルールは次のようになっています。うるう年は、その年が新しい世紀の始まりでない限り、4 で割ることができる年です (1700 年、1800 年、1900 年 .....)。つまり、1900 を 4 で割ることはできても、400 で割ることはできないので、それは誤りです。もう一度質問: public static boolean の代わりに public boolean を使用できるようにするには、どうすればよいですか?

4

4 に答える 4

2

この結果をどこにも保存する必要はありません。

使用する:

public static boolean isLeapYear(int year) 
{
   return (((year/100)%4 == 0 && year%4 ==0) || (year % 400 == 0));
}
于 2012-11-20T20:10:01.360 に答える
2

メソッドを非静的にしたい場合は、メイン メソッドからそのメソッドを呼び出すクラスのインスタンスを作成する必要があります。そして、isLeapYear変数を非静的にすることができます: -

boolean isLeapYear;
public static void main(String[] args)
{        
    int year = 2000;
    new Assigment().isLeapYear(year);
}
public boolean isLeapYear(int year) {
    // access isLeapYear as `this.isLeapYear` or just `isLeapYear`
}

しかし、正確には、結果をブール変数に格納する必要はありません。ある式のブール値を返したい場合は、その式を返すだけです。

したがって、メソッドにこのコードを含めるだけでも問題なく機能し、読みやすくなり、そのメソッドを静的にします: -

return (((year/100)%4 == 0 && year%4 ==0) || (year % 400 == 0))

そしてあなたのメインコールから: -

System.out.println("Year : " + year + ", is leap year: " + isLeapYear(year));
于 2012-11-20T20:07:27.337 に答える