当前位置: 首页 > 知识库问答 >
问题:

基于菜单的日历系统[重复]

怀展
2023-03-14

在课堂上,我的任务是创建一个基于菜单的日历系统,可以接受用户输入(他们指定日期)。它们通过输入数字来指定年份、月份、日期(例如26)和星期几。我不允许使用基于日期的库或内置类。

基于此,程序需要根据他们的输入输出日历,类似于:

Calendar for September 2016
Su  Mo  Tu  We  Th  Fr  Sa
-   -   -   -   1   2   3   
4   5   6   7   8   9   10  
11  12  13  14  15  16  17  
18  19  20  21  22  23  24  
25  26  27  28  29  30  -

如果该月有28天,则该日之后的任何一天都应显示为连字符(-),如果该月的第一天是星期一,则该月的前一个星期天应显示为连字符,而不是负数。我有一个数组,包含每个月可以在这里使用的最大天数。

我不确定如何输出这样格式化的日历,因为它需要从用户定义的日期开始,并工作到月初,并转发到月底。

任何关于如何像上面例子中那样格式化日历的帮助都将不胜感激。

我发现这有点类似,但它没有考虑到用户选择了一周中的哪一天。所以我面临的主要问题是让日历将日期与一周中的某一天对齐。更新:我有日历逻辑的所有数据验证(我想)。它是:

 // Inputs user's choice for year
                System.out.print("Enter Year after 1999:" + " ");
                year = input.nextInt();

                // Data validation to ensure year is later than 1999
                if (year <= 1999) {
                    while (year <= 1999) {
                        System.out.println("Please enter a year after 1999: ");
                        year = input.nextInt();
                    }
                }

                // Checking if year is a leap year
                if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0 && year % 100 ==0) {

                    // Changes Number of Days in February
                    monthdays[1] = 29;
                    leapyear     = true;
                } else {

                    // Changes Number of Days in February
                    monthdays[1] = 28;
                }

                // Inputs user's choice for month
                System.out.print("Enter Month (1 to 12):" + " ");
                month = input.nextInt();

                // Data validation to ensure selected month is between 1 and 12
                if ((month > 12) || (month < 1)) {
                    while ((month > 12) || (month < 1)) {
                        System.out.println("Please enter a month between 1 and 12: ");
                        month = input.nextInt();
                    }
                }

                // Inputs user's choice for day
                System.out.print("Enter Day:" + " ");
                day = input.nextInt();

                // Data validation to ensure the day is between 1 and the maximum number of days in that month (based on values contained in the array)
                if ((day > monthdays[month - 1]) || (month < 1)) {
                    while ((day > monthdays[month - 1]) || (month < 1)) {
                        System.out.print("Please enter a valid day for your chosen month: ");
                        day = input.nextInt();
                    }
                }

                // Inputs user's choice for day of week
                System.out.print("Enter day of week (1-7):" + " ");
                weekday = input.nextInt();

                // Data validation to ensure the weekday is between 1 and 7
                if ((weekday > 7) || (weekday < 1)) {
                    while ((weekday > 7) || (weekday < 1)) {
                        System.out.println("Please enter a day between 1 and 7:" + " ");
                        weekday = input.nextInt();
                    }
                }

                System.out.println("Thank you for your input. You will now be returned to the main menu.");

共有1个答案

宗政博
2023-03-14

至于菜单,请使用java.io扫描仪。对于日历的逻辑,您需要一周中的几天(7)的字符串数组,一年中的几个月(12)的字符串数组。您需要考虑的一些知识是,9月、4月、6月和11月有30天。1月、3月、5月、7月、8月、10月和12月有31天。以及2月的28天,但不要考虑2月有29天的闰年。此外,Y2K也可能符合逻辑。还要知道,除了可以被400整除的年份之外,可以被100整除的年份不是闰年。可能还有一些其他因素,但这应该有助于你开始。

 类似资料:
  • 本文向大家介绍详解基于javascript实现的苹果系统底部菜单,包括了详解基于javascript实现的苹果系统底部菜单的使用技巧和注意事项,需要的朋友参考一下 (不好意,先前发布的是有误的分析。现在的这个没问提了!!!) 昨天看到了“妙味课堂”的一个苹果菜单的DEMO。根据里面提到的“勾股定理”。我自己分析了一下代码。如下: 先来一效果图吧! 静止时: 鼠标滑动时: 一、要实现在的功能或效果:

  • 本文向大家介绍基于javascript编写简单日历,包括了基于javascript编写简单日历的使用技巧和注意事项,需要的朋友参考一下 一.表格行数问题      既然要显示日期表格的话,首先得知道这个表格有多少行多少列,列数是已经确定的,从星期天(日历上第1列是星期天)到星期六一共7列。要解决行数问题之前,还得先知道这个月的第1天是星期几,因为每个月的1号并不都是从日历上的星期天开始排的,可能1

  • 5.5.2.菜单系统与 Intent 我们还需要一个地方来切换界面,因此在这里引入 Android 的菜单系统及 Intent 机制,学习通过发送 Intent 实现切换界面的方法。

  • 主要内容:前 言,认识一下单库版本的订单系统,业务快速增长,驱动系统架构不断演进,来看一下分库分表版本的订单系统架构,结束语前 言 各位读者朋友,大家好,这是分库分表实战的第一篇文章,首先介绍一下"基于ShardingSphere的分库分表实战"的设计思路及内容。 本实战的重点是分库分表实战,比较适合1~3年工作经验的程序员朋友。实战主要以外卖APP中的外卖订单来作为本次实战的核心业务。 基于外卖订单业务,儒猿技术团队开发了一个外卖订单项目,通过该项目逐步分析随着订单数据量逐步增加,系统将遇到什

  • 我的一个模块项目中有一个考勤系统,使用PHP和MySQL,MySQL表如下所示: 现在,时间表被用来存储一天中某一段的类时间表,以及分配给哪位老师。student_info表包含有关学生及其所属部分的一般信息。attendancetable用于记录缺勤人员,使用时间和学生id作为主键。 我可以得到一个学期有多少类被录取的统计如下: 然后计算一个学生参加的次数,也计算出勤率。 现在,我还想显示一种考

  • 用户可以像这样在手机中设置他们的自定义开始日期。再加上不同的文化,一周开始的日子也不同: 澳大利亚,英国:周日,周一。。。,星期六 中国:周一,周二。。。,星期日 这意味着在开发日历功能时,我们可能有许多不同的一周中的日子从(从左到右)开始我们的日历,以使用户体验最佳。 我们可以定制日历,以确定一周中的具体开始日期: 问题在于将我的自定义日历更新为用户的系统日历。 当我使用Calender(从用户