首页 > 代码库 > 【Java】使用switch 计算一个日期是当年的第几天

【Java】使用switch 计算一个日期是当年的第几天

计算一个日期是当年的第几天

 

这是去年做的一个Java题目,老师当时说这段代码里的switch用的很好。

现在工作一年了,明显感觉当时还很稚嫩,那个时候考虑问题很简单,

现在遇到问题会想更多的方面,说到这里,真的要谢谢带我的经理,

这段时间真的学到很多东西,每天都是在解决问题,每天都能学到新东西,

短短几个月时间进步了好多。

 

 1 import java.util.Scanner;
 2 
 3 /**
 4  * 计算一个日期是当年的第几天
 5  */
 6 public class CountDays {
 7 
 8 
 9     public static void main(String[] args) {
10         Scanner in = new Scanner(System.in);
11         int year,month,day;
12         int dayNumber =0;
13 
14         //input year month day
15         System.out.println("input  year month(1-12) day(1-31): ");
16         System.out.print("       ");
17         year  =  in.nextInt();
18         month =  in.nextInt();
19         day   =  in.nextInt();
20 
21         //判断闰年
22         boolean flag =false;
23         if ((year%4==0 && year%100 !=0) || year%400==0)
24         {
25             flag = true;
26         }
27         
28         //month
29         switch (month)
30         {
31         case 12:dayNumber +=30;
32         case 11:dayNumber +=31;
33         case 10:dayNumber +=30;
34         case 9 :dayNumber +=31;
35         case 8 :dayNumber +=31;
36         case 7 :dayNumber +=30;
37         case 6 :dayNumber +=31;
38         case 5 :dayNumber +=30;
39         case 4 :dayNumber +=31;
40         case 3 :if (flag)//闰年
41         {
42             dayNumber +=29;
43         }else
44             dayNumber +=28;
45         case 2 :dayNumber +=31;
46         case 1 :dayNumber +=day;break;
47         default:System.out.println("ERROR!");
48         }
49         System.out.println("dayNumber :"+dayNumber);
50     }
51     
52 }

 

 

这段代码只能解决输入正确的值,没有校验数据是否符合常识;

还是控制台输入,这在实际项目很少遇到,大多是解析出一个日期值;

而且也没有考虑【1752年9月】这个特殊情况,这点还是跟经理学到的

 

最后,请无视我蹩脚的英文。