For Loop:闰年

时间:2014-10-07 19:16:46

标签: java if-statement for-loop

我试图编写一个程序,直到2100年每行显示十个闰年。

到目前为止我的代码是:

public class leapYear {
public static void main (String args[]){
    int leapYear = 2001; // initialize leapYear variable to 2001

    if (leapYear <= 2100){
        for (int x = 0; x <= 10; x++){ // print ten leap years per line
            System.out.print(leapYear + " ");
            leapYear = leapYear + 4;
        }// end of for loop
        System.out.println(" ");
        int x = 0;
    } // end of if statement

}// end of main method

} //班级的结尾

我从代码中得到的输出是:

2001 2005 2009 2013 2017 2021 2025 2029 2033 2037 2041  

我无法找到允许我在以下行中打印下一系列leapYears的条件。任何指导都将不胜感激。

6 个答案:

答案 0 :(得分:1)

if(leapYear <= 2100)行更改为while(leapYear <= 2100)

if语句只执行一次,这意味着你打印出10个日期。 while循环将执行leapYear大于2100所需的次数。

答案 1 :(得分:1)

您当前正在使用if语句检查是否要打印某些内容(if (leapYear <= 2100))。但是,在你的for-loop之后,你想再次检查在到达年份2100之前是否还有更多的闰年。这可以通过使用while循环来完成,即while(leapYear < 2100)。 (由于2100年不是闰年,见下文)

此外,应该指出的是,2004年是闰年更好的起点,而2100年不是闰年(2000年的时候)。有关详细信息,请参阅wiki

与您的问题无关的第二个注释,您也可以使用System.out.println();(所以没有参数)来打印您所追求的换行符。

第三个也是最后一个,行int x = 0;不是必需的,因为x循环中的计数器for不再存在于该循环之外。

答案 2 :(得分:1)

你的If语句是什么给你带来麻烦,它只执行一次。你需要类似while循环的东西,或者你可以像这样使用for循环,

                for (int leapYear = 2001; leapYear <= 2100; leapYear += 4) {
                    if((leapYear - 1) % 40 == 0) {
                        System.out.println(" ");
                    }
                    System.out.print(leapYear + " ");
                }

但是我想指出,你打印出来的年份都不是闰年。闰年是可被4整除的除非被100整除,除非可以被400整除(即2000年是2004年的闰年,而2100年将是2400,但是2400将会是超级混乱)你可能想要检查{{3闰年。

祝你好运!

答案 3 :(得分:1)

你问过如何每行打印10个闰年。 要做到这一点,只需更改:
if (leapYear <= 2100) {
至:
while (leapYear <= 2100) {

这里有完整的工作和测试示例:

public class LeapYear {
    public static void main(String[] args) {

        int leapYear = 2001; // initialize leapYear variable to 2001

        while (leapYear <= 2100) { // a simple change of "If" to "While" here
                                    // will do the trick
            for (int x = 0; x < 10; x++) {
                System.out.print(leapYear + " "); // print ten leap years per
                                                    // line
                leapYear = leapYear + 4;
            }
            System.out.println();
        } // end of while loop
    } // end of main method
}// end of class

话虽如此,我会推荐一些已经提到的事情。

1 - 您的代码中存在一些逻辑错误,这些错误会错误地标出几年的闰年。有关闰年的更多信息,请参阅here

2 - 如果您尝试我的示例,您还会注意到闰年显示在2100年之后。如果您不想要数字,您需要找到正确构建代码的方法将于2100年后显示。

3 - 我强烈建议您查看GregorianCalendar类,因为它会简化您的代码以检查闰年。但是,如果您这样做是为了学习或学校作业,我建议您查看编号1下的链接。

4 - 更多的是,但在您的代码中,您有:

leapYear = leapYear + 4

这可以简化为:

leapYear += 4

希望这有助于为您澄清事情。

答案 4 :(得分:0)

为闰年提供正确的实施:

public void main(String[] args) {
    for(int year = 2001 ; year <= 2100 ; ++year) {
        if(isLeapYear(year)) {
            System.out.println(year);
        }
    }
}

public static boolean isLeapYear(int year) {
    if (year % 4 != 0) {
        return false;
    } else if (year % 400 == 0) {
        return true;
    } else if (year % 100 == 0) {
        return false;
    } else {
        return true;
    }
}

答案 5 :(得分:-1)

public static void main (String args[]){
    int leapYear = 2001; // initialize leapYear variable to 2001

    while (leapYear <= 2100){
        for (int x = 0; x < 10; x++){ // print ten leap years per line
            if (leapYear > 2100){ // if leapYear is over 2100, stop printing
                break;
            }
            System.out.print(leapYear + " ");
            leapYear = leapYear + 4;
        }// end of for loop
        System.out.println(" ");
        int x = 0;
    } // end of if statement

}// end of main method