欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-12-25 11:53:21
最近在学习C#,昨天老师布置了一个作业,输入年月日,返回这一天是一年中的第几天。 大致分析了一下,想出了一种方法,大致思路如下: 使用 switch 检测月份得出该月长度; 根据年份决定二月长度; 最后再加上日期。 以下列出代码: 然而,看了一个同学的代码,简直是醍醐灌顶。大致思路如下 使用一个长度 ......

最近在学习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);

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

反思:

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

这是一个大的教训。

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

 

要问同学何许人?

河北辛集年轻妈妈是也。