Java 需要了解此开关代码的帮助-月中的天

Java 需要了解此开关代码的帮助-月中的天,java,switch-statement,leap-year,Java,Switch Statement,Leap Year,我现在正在学习Java,在理解switch的用法时遇到了一些问题。如果有人能简单地给我解释一下,我将不胜感激。 下面是代码: public class SwitchDemo2 { public static void main(String[] args) { int month=3; int year=2000; int NumDays=0; switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12:

我现在正在学习Java,在理解switch的用法时遇到了一些问题。如果有人能简单地给我解释一下,我将不胜感激。 下面是代码:

 public class SwitchDemo2 {
 public static void main(String[] args) {
int month=3; 
int year=2000;
int NumDays=0;
switch(month) {
case 1: case 3: case 5: case 7: case 8: case 10:
case 12: NumDays=31; break;
case 4: case 6: case 9: case 11: NumDays=30;
break;
case 2: if ( ( (year%4 == 0) && !(year%100==0) ) ||
(year%400==0))
    NumDays=29;
else NumDays=28;
break;
default: System.out.println("Invalid month.");
break;}
System.out.println("Number of Days= "+NumDays);
 }}
我不明白的是案例2之后的定义。“第%4年==0”-好吧,这是有道理的,这是闰年,但是呢!(年份%100==0)或(年份%400==0)?我们为什么要用这个


提前谢谢

根据闰年的定义:

如果一年可以被400整除,那就是闰年 否则,如果一年可以被100整除,那么就不是闰年 否则,如果一年可以被4整除,那么就是闰年
除此之外,不是闰年-它是闰年定义的一部分。mod 100和400是闰年定义的一部分