【发布时间】:2016-01-11 19:05:01
【问题描述】:
我的程序是判断输入的年份是否是满足这些要求的闰年:
如果一年能被 4 整除,则为闰年。但如果该年能被 100 整除,则只有当它也能被 400 整除时,它才是闰年。
创建一个程序来检查给定年份是否为闰年。
以下是每个输入应产生的结果:
输入年份:2011 这一年不是闰年。
输入年份:2012 这一年是闰年。
输入年份:1800 这一年不是闰年。
输入年份:2000 这一年是闰年。
这是我想出的:
import java.util.Scanner;
public class LeapYear {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
System.out.println(" Type a year ");
int number = Integer.parseInt(reader.nextLine());
if (number % 4 == 0 ) {
System.out.println(" This is a leap year");
} else if (number % 100 == 0 && number % 400 == 0) {
System.out.println(" This is a leap year ");
} else {
System.out.println( "This is not a leap year");
}
}
}
除了 1800 之外,它们都工作。1800 不是闰年,我的程序说它是(它不能被 400 整除)。似乎 (number % 100 == 0 && number % 400 == 0) 仅在 (number % 4 == 0 ) 不存在时才有效。为什么我的程序无法正常运行?
【问题讨论】:
-
请修正您的括号,使您的代码更具可读性!
-
组织您的
if子句,以便首先执行最大的测试(相对于 400 年)。否则,由于 1800 % 4 == 0,它将在if语句的第一部分结束评估
标签: java conditional