我试图编写一个程序,直到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的条件。任何指导都将不胜感激。
答案 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