繁体   English   中英

java while循环内部或外部循环

[英]java while loop inside or outside loop

我有以下代码显示下一个when年的时间。 在while循环中,我没有在while循环内找到该行leapYear = (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))在第一次尝试。 我不包括该行的原因是,如果jumpYear为false,则y将加1。然后while (!leapYear)通过将新的y值插入到while循环上方的行中,再次测试while (!leapYear)条件boolean leapYear = (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))

我不明白为什么我需要再次在while循环中放入该jumpYear行。 我已经在循环上方使用了它,它将用于测试y++之后的条件,因为while条件需要测试是否是否有jumpYear。

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 + "."); 
    }
}

因为您的y在循环内变化。 jumpYear取决于y,因此一旦y发生变化,就需要重新计算。

由于您的Y值在循环内更改,因此,例如,如果1994是Y的值,则它是一个leapyear ,然后在循环内它不检查leap年,并且y的值预增加了++y 因此,现在如果是1995,则对条件进行测试,即!leapyear,并执行while循环,直到满足条件为止,因此直到下一个leap年,即1998年。因此,它将终止并打印the年。 希望这可以帮助。!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM