2014-02-10 1 views
0

Я изучаю Java на данный момент, и у меня есть некоторые проблемы с пониманием использования переключателя здесь. Я был бы очень признателен, если бы кто-нибудь мог объяснить это просто для меня. Так вот код:Нужна помощь при понимании этого кода переключения - Дни месяцев

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); 
}} 

То, что я не понимаю, это Definiton после случая 2. «год% 4 == 0» - хорошо, что имеет смысл, что это високосный год, но как! (год% 100 == 0) или (год% 400 == 0)? Почему мы это используем?

Заранее благодарен!

+2

HTTP : //en.wikipedia.org/wiki/Leap_year#Algorithm – assylias

+0

https://en.wikipedia.org/wiki/Leap_year - Это часть определения високосного года. –

+0

мод 100 и 400 является частью определения високосных лет –

ответ

1

По определению високосного года:

если год делится на 400, то is_leap_year еще если год делится на 100, то not_leap_year еще если год делится на 4, то is_leap_year еще not_leap_year