这就是你想要做的:
公共类 TestLeapYear {
public static void main(String[] args) {
int year = 1900;
while (year <= 2100 ){
if (year % 4 == 0){
System.out.println(year + " Is a Leap Year");
year++;
}
else {
System.out.println(year + " Is not a leap year");
year++;
}
}
}
}
此代码遍历从 1900 到 2100 的所有年份,并检查每个年份是否为闰年 (year%4==0)。然后它会相应地打印。
编辑:您也可以使用三元运算符(条件?doIfTrue:doIfFalse)在一行中完成(但它的可读性较差......)
public static void main(String[] args) {
int year = 1900;
while (year <= 2100 ){
System.out.println(year + " Is "+ ((year % 4 == 0)? "" : "not")+" a Leap Year");
year++;
}
}
在您的原始代码中:
您正在滥用 while 循环。while 循环的原理是做同样的事情,直到条件为真。
所以这 :
while(condition){ doSomething()}
可以翻译为:当条件为真时,我将 doSomething() 当它不再为真时,我将继续。
在您的原始代码中,条件是year <= 2100 && (year % 4 == 0)
只有当年份小于或等于 2100 并且年份模 4 等于 0 时才为真。这是第二个条件为假,因此退出循环。
看看我是如何在循环中使用 IF ELSE 语句的?这个循环多年来一直在进行,对于每个人,我们都会测试它是否是闰年。
关于闰年:
您确定一年是否为闰年的方法并不完整。维基百科提出了一个很好的算法:
if year is divisible by 400 then
is_leap_year
else if year is divisible by 100 then
not_leap_year
else if year is divisible by 4 then
is_leap_year
else
not_leap_year