改变静态布尔值

时间:2012-11-20 20:05:27

标签: java static boolean public

我有一个学校的任务,要做一个导致真或假的程序。这是关于一年是否是闰年。我现在遇到的问题是我使用的是公共静态布尔值而不是公共布尔值。 这是我的代码:

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年,但规则是这样的: 除非年份是新世纪的开始(1700,1800,1900 .....),否则闰年可以除以4。因此,即使你可以将1900除以4,也不能将它除以400,因此它是假的。 所以问题是:我需要做什么才能使用公共布尔值而不是公共静态布尔值?

4 个答案:

答案 0 :(得分:2)

如果要使方法非静态,则需要创建类的实例以从main方法调用该方法。然后,您可以将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));

答案 1 :(得分:2)

您无需将此结果存储在任何位置。

使用:

public static boolean isLeapYear(int year) 
{
   return (((year/100)%4 == 0 && year%4 ==0) || (year % 400 == 0));
}

答案 2 :(得分:1)

静态方法只能访问静态变量,只有实例方法可以访问实例方法,如果你认为面向对象,可以推断出它们。

以防万一你应该存储布尔isLeapYear

public class Testing {
boolean isLeapYear;

public static void main(String[] args)
{        
    int year = 2000;
    new Testing().isLeapYear(year);
}
public 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;
}
}

答案 3 :(得分:0)

你的作业是否说它必须存储在类或实例变量中?如果没有,则不需要public boolean isLeapYearpublic static boolean isLeapYear,只需返回计算的结果并将其存储在如下的本地变量中:

public static boolean isLeapYear(int year) {
    return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0); 
}
main方法中的

int year = 2000;
boolean isLeap = isLeapYear(year);
System.out.println(isLeap);