【发布时间】:2021-01-02 19:52:51
【问题描述】:
我似乎无法弄清楚为什么它不会在一个范围内打印超过一年。到目前为止,除此之外的一切我都已准备就绪。
开始年份不能早于 1752 年,结束年份不能早于 9999。我需要程序找到所选开始年份和所选结束年份之间的所有闰年,然后打印所有这些闰年为用户。
在我在末尾添加else if 以在给定范围内没有年份时打印一条消息之前,一切似乎都运行良好。如果可以的话,我会删除它,但该消息是我的作业要求的一部分。
import java.util.Scanner;
class Final_Project_Mendenhall {
public static void main(String[] args)
{
int startYear = 1752;
int endYear = 9999;
int i;
int j = 0;
Scanner in = new Scanner(System.in); //Scanner object to get user input for Start Year
System.out.print("Enter the Start Year (Greater or equal to 1752):");
startYear = in.nextInt(); //Get Start Year from user
while (startYear < 1752){
System.out.println("Enter a valid start year (Greater or equal to 1752):");
startYear = in.nextInt(); //Get valid Start Year from user
} //End while
System.out.print("Enter the End Year (Less than 9999):");
endYear = in.nextInt(); //Get End Year from user
while (endYear > 9999){
System.out.println("Enter a valid end year (Less than 9999):");
endYear = in.nextInt(); //Get valid End Year from user
} //End while
System.out.println("Leap years:"); //Print Leap Years
for (i = startYear; i <= endYear; i++){ //Loop through years between Start and End Years
if ((0 == i % 4) && (0 == i % 400)){ //Find and print Leap Years, if there are
System.out.println(i);
j++;
}//End if
//End for
else if(j == 0){
System.out.println("There are no leap years in that range");
}//End if
}
}
}
【问题讨论】:
-
最后的 if 语句应该在 for 循环之后,并且不应该有 else-if。