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的问题。他在问如何使用非静态
方法而不是静态方法
。