Java 更改静态布尔值

Java 更改静态布尔值,java,static,boolean,public,Java,Static,Boolean,Public,我有一个学校的作业,要做一个程序,结果要么正确,要么错误。这关系到一年是否是闰年。我现在的问题是,我使用的是公共静态布尔值,而不是公共布尔值。 这是我的代码: public class Assignment { static boolean isLeapYear; public static void main(String[] args) { int year = 2000; isLeapYear(year);

我有一个学校的作业,要做一个程序,结果要么正确,要么错误。这关系到一年是否是闰年。我现在的问题是,我使用的是公共静态布尔值,而不是公共布尔值。 这是我的代码:

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;
    }
}
目前国际年是2000年,但规则如下: 闰年是可以被4除的一年,除非这一年是新世纪的开始(1700年、1800年、1900年……)。所以即使你能把1900除以4,你也不能把它除以400,所以它是假的。
那么问题又来了:我需要做什么才能使用公共布尔值而不是公共静态布尔值?

如果要使方法非静态,则需要创建类的实例以从主方法调用该方法。然后您可以将
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))
但是,准确地说,您不需要将结果存储在布尔变量中。如果要返回某个表达式的布尔值,则只需返回该表达式即可

因此,在方法中使用此代码也可以很好地工作,并且可读性更好,并且让该方法是静态的:-

return (((year/100)%4 == 0 && year%4 ==0) || (year % 400 == 0))
从你的主要电话:-

System.out.println("Year : " + year + ", is leap year: " + isLeapYear(year));

您的赋值是否表示它必须存储在类或实例变量中?如果不是,则不需要
public boolean isLeapYear
public 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);

您不需要将此结果存储在任何位置

使用:


静态方法只能访问静态变量,只有实例方法才能访问实例方法,如果您认为是面向对象的,则可以推断出这一点

以防万一,您应该每年存储布尔值

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;
}
}

要使用公共布尔值,您需要创建一个对象。@Downvoter。。请留下评论。我已经回答了OP提出的问题:-
我需要做什么才能使用公共布尔值而不是公共静态布尔值?
。请在表决前阅读问题?我不认为这个答案真的需要否决票。当然这是一个好的建议,但它并没有真正回答OP的问题。他在问如何使用
非静态
方法而不是
静态方法