我有以下代码显示下一个闰年的时间。在while循环中,我在第一次尝试时没有在while循环leapYear = (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
内的行。我不理解该行的原因是,如果leapYear为false,y将加1.然后通过插入while循环while (!leapYear)
上方的行,使用新的y值再次测试boolean leapYear = (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
条件。
我不明白为什么我需要再次在while循环中放入leapYear行。我已经将它放在循环之上,它将用于测试y++
之后的条件,因为while条件需要测试是否leapYear。
import java.util.Scanner;
public class NextLeapYear {
public static void main(String[] args) {
Scanner year = new Scanner (System.in);
System.out.print("Enter a year: ");
int y = year.nextInt();
boolean leapYear = (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0));
while (!leapYear) {
y++;
leapYear = (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0));
}
System.out.println("The next leap year is " + y + ".");
}
}
答案 0 :(得分:0)
因为你的y在循环中正在改变。 leapYear取决于y所以你需要在y变化时重新计算。
答案 1 :(得分:0)
由于你的Y值在循环中发生了变化,因此,例如,如果1994是Y的值,则它是LD_LIBRARY_PATH
,然后在循环内部检查不是leapyear,y的值是预先递增的{ {1}}。所以,现在如果它是1995年,那么它将被测试条件,即!leapyear和while循环执行直到它满足条件,所以直到1998年的下一个leapyear。所以它终止并打印了leapyear。希望这有帮助。!