java while循环内部或外部循环

时间:2018-01-28 00:31:18

标签: java

我有以下代码显示下一个闰年的时间。在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 + "."); 
    }
}

2 个答案:

答案 0 :(得分:0)

因为你的y在循环中正在改变。 leapYear取决于y所以你需要在y变化时重新计算。

答案 1 :(得分:0)

由于你的Y值在循环中发生了变化,因此,例如,如果1994是Y的值,则它是LD_LIBRARY_PATH,然后在循环内部检查不是leapyear,y的值是预先递增的{ {1}}。所以,现在如果它是1995年,那么它将被测试条件,即!leapyear和while循环执行直到它满足条件,所以直到1998年的下一个leapyear。所以它终止并打印了leapyear。希望这有帮助。!