栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > Unity3D

【C#基础】控制台月历

Unity3D 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C#基础】控制台月历

这两天看了一下B站的unityC#基础,看到一个经典例题,也是说月历的。

稍微做了一下,在这里分享一下我个人的代码方法。

PS:本方法主要基于三个语句

获得天数:

int DateTime.DaysInMonth(year, month)

获得当天为星期几:

DateTime date = new DateTime(year, month, day);

int date.DayOfWeek (这个转int可以输出0~6,对应星期日到星期六);

下面是使用案例

1.Main直接用来交互

        static void Main()
        {
            Console.WriteLine("请输入年份");
            int year = AnswerYear();
            Console.WriteLine("请输入月份");
            int month = AnswerMonth();
            Console.WriteLine("{0}年{1}月的月历", year, month);
            Display(year,month);//把年份和月份传到display里
            Console.WriteLine("再试一次吗?Y/N");
            do
            {
                var answer = Console.ReadLine()?.ToLower();
                switch (answer)
                {
                    case "y":Main();return;
                    case "n":return;
                    default:Console.WriteLine("无法识别的输入,请重新输入");break;
                }
            } while (true);
        }

2.AnswerYear和AnswerMonth的检测。

因为我的方法需要用到datetime(里面规定年份范围为1~9999,月份范围为1~12,否则会报错。)

        private static int AnswerYear()
        {
            int answer;
            do
            {
                int.TryParse(Console.ReadLine(), out answer);
                if (answer >= 1 & answer <= 9999) 
                {
                    break;
                }
                else
                {
                    Console.WriteLine("数据类型错误,请重新输入");
                }
            } while (true);
            return answer;
        }//判断输入的年份是否符合要求并输出int数

3.显示(display)函数

        private static void Display(int year,int month)
        {
            int days = DateTime.DaysInMonth(year, month);//获得当月天数
            Console.WriteLine("日t一t二t三t四t五t六");//表头
            //逐日编入表中
            for (int day = 1; day<=days; day++) 
            {
                DatesLocation(year, month, day);//处理位置的函数
                Console.Write(day);
            }
            Console.Write("rn");
        }

4.日期位置DatesLocation函数

        private static void DatesLocation(int year,int month,int day)
        {
            DateTime date = new DateTime(year, month, day);
            
            if (day == 1)//处理第一天的位置
            {
                for(int i= (int)date.DayOfWeek; i>0; i--)//第一天的星期数即为空格数
                {
                    Console.Write("t");
                }
            }
            else if ((int)date.DayOfWeek == 0)//处理星期天的转行
            {
                Console.Write("rn");
            }
            else//同行的日期空格
            {
                Console.Write("t");
            }
        }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/900453.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号