当前位置: 移动技术网 > IT编程>开发语言>.net > 180720_一种有效的日期计数方法

180720_一种有效的日期计数方法

2018年09月21日  | 移动技术网IT编程  | 我要评论

蓝色爱情海雨雪霏霏,寒冬末日之帽,张国荣网络世界

最近在学习c#,昨天老师布置了一个作业,输入年月日,返回这一天是一年中的第几天。

大致分析了一下,想出了一种方法,大致思路如下:

  使用 switch 检测月份得出该月长度;

  根据年份决定二月长度;

  最后再加上日期。

以下列出代码:

 1 console.writeline ("请输入年份:");
 2 int year = int.parse (console.readline ());
 3 console.writeline ("请输入月份:");
 4 int month = int.parse (console.readline ());
 5 console.writeline ("请输入日期:");
 6 int day = int.parse (console.readline ());
 7 int days = 0;
 8 for (int i = 1; i < month; i++) {
 9     switch (month) {
10     case 2:
11         days += (year % 400 == 0 || year % 4 == 0 && year % 100 != 0) ? 29 : 28;
12         break;
13         case 1:
14     case 3:
15     case 5:
16     case 7:
17     case 8:
18     case 10:
19     case 12:
20         days += 31;
21         break;
22     case 4:
23     case 6:
24     case 9:
25     case 11:
26         days += 30;
27         break;
28     default:
29         break;
30     }
31 }
32 console.writeline ("该日期是这一年的第{0}天",days+day);

然而,看了一个同学的代码,简直是醍醐灌顶。大致思路如下

  使用一个长度为12的数组分别存储平年12个月的日期长度。

  使用循环从一月累加到输入的月份,并存放到总日期数量中,如输入7月,则累加 [0]~[7] 元素;

  总日期数再加上输入的日期;

  若输入的月份大于2且为闰年,则总日期数再+1;

代码如下:

 1 console.writeline ("请输入年份:");
 2 int year = int.parse (console.readline ());
 3 console.writeline ("请输入月份:");
 4 int month = int.parse (console.readline ());
 5 console.writeline ("请输入日期:");
 6 int day = int.parse (console.readline ());
 7 int days = 0;
 8 int[] months = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
 9 for (int i = 0; i < month - 1; i++) {
10     days += months [i];
11 }
12 days += day;
13 if (month > 2 && (year % 400 == 0 || year % 4 == 0 && year % 100 != 0)) {
14     days++;
15 }
16 console.writeline ("该日期是这一年的第{0}天",days+day);

可见,代码整整少了一半。

反思:

思考之下,我的代码完全是属于未经雕琢,直来直去的代码,仅实现了功能,却未能思考代码中哪些部分是必定执行,哪些部分不需过多检查,总之属于未理清思路。

这是一个大的教训。

写代码还是要勤勤恳恳,多写多记多重构。

 

要问同学何许人?

河北辛集年轻妈妈是也。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网