面向过程的java日历

Posted 怦然星动

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向过程的java日历相关的知识,希望对你有一定的参考价值。

  1 import java.util.Scanner;
  2 
  3 public class MyCalendar {
  4     /*
  5      * 从控制台输入 × × × ×年× ×月,从控制台输出该月日历 (1900年1月1日是星期一)
  6      * 
  7      */
  8 
  9     public static void main(String[] args) {
 10         Scanner sc = new Scanner(System.in);
 11 
 12         // 获得输入的那一年的天数
 13 //    public void isYear() {
 14         System.out.println("请输入年");
 15         int getYear = sc.nextInt();// 获得年
 16         int isR = 0;// 是闰年计数
 17 //        判断几个平年几个闰年
 18         for (int i = 1900; i < getYear; i++) {
 19 //            判断是否是闰年:能被4整除但不能被100整除;或者能被400整除 
 20             if (i % 400 == 0 || (i % 4 == 0 && i % 100 != 0)) {
 21                 isR++;
 22             }
 23             // 到该年的一月一号有多少天
 24         }
 25         int allYearDay = isR * 366 + (getYear - 1900 - isR) * 365;
 26         // 判断输入的这一年是平年还是闰年
 27         int isRight = (getYear % 400 == 0 || getYear % 4 == 0 && getYear % 100 != 0) ? 366 : 365;
 28 
 29 //    获得输入的那个月的天数
 30 //    public void isMonth() {
 31         System.out.println("请输入月");
 32         int getMonth = sc.nextInt();
 33 //        闰年2月:29天 
 34 //        平年2月:28天
 35 //        口诀
 36 //        一三五七八十腊
 37 //        三十一天永不差
 38 //        四六九冬三十整
 39 //        平年二月二十八
 40 //        闰年二月把一加
 41 //        这里面的腊月指十二月
 42 //        冬指的是十一月
 43 //        闰年是年数除四能除尽的
 44 //        平年是除了闰年的年
 45 //        判断几个大月几个小月
 46         int allMonthDay = 0;
 47         int DayOf_getMonth = 0;
 48 
 49         for (int i = 1; i <= getMonth; i++) {
 50             int day = 0;
 51             switch (i) {
 52             case 1:
 53             case 3:
 54             case 5:
 55             case 7:
 56             case 8:
 57             case 10:
 58             case 12:
 59                 day = 31;
 60                 break;
 61             case 4:
 62             case 6:
 63             case 9:
 64             case 11:
 65                 day = 30;
 66                 break;
 67             case 2:
 68                 if (isRight == 366) {
 69                     day = 29;
 70                 } else {
 71                     day = 28;
 72                 }
 73                 break;
 74             }// 算今年这几个月有多少天 不加上要的那个月的天数
 75             if (i == getMonth) {
 76                 // 得到输入那个月的天数
 77                 DayOf_getMonth = day;
 78 
 79             } else {
 80                 allMonthDay += day;
 81 
 82             }
 83         }
 84         // 算一下总天数 //出去输入的那个月
 85         int totalDays = allYearDay + allMonthDay;
 86 //        System.out.println(DayOf_getMonth);
 87 //        System.out.println(allYearDay);
 88 //        System.out.println(allMonthDay);
 89 //        System.out.println(totalDays);
 90         System.out.print("星期天	" + "星期一	" + "星期二	" + "星期三	" + "星期四	" + "星期五	" + "星期六	");
 91         System.out.println();
 92         /*
 93          * 要算星期几,得有已知条件:如2014年1月1日是星期三,那么2015年1月1日是星期几
 94          * 计算方法:先求出天数,(也就是2014年1月1日过多少天是2015年1月1日:365天)
 95          * 再求余数,(则365÷7=52周余1天),最后算日期:余数+星期几=1+3=4,也就是星期四
 96          */
 97         int firstDay = totalDays % 7 + 1;// firstDay是星期几
 98         // 记一下空格数,用来换行
 99         int isFlag = 0;
100         for (int j = 0; j < firstDay; j++) {
101             isFlag++;
102             System.out.print(" 	");
103         }
104         for (int m = 1; m <= DayOf_getMonth; m++) {
105             if (m < 10) {
106                 System.out.print(" " + m + "	");
107             } else {
108                 System.out.print(m + "	");
109             }
110             if ((isFlag + m) % 7 == 0) {
111                 System.out.println();
112 
113             }
114 
115         }
116 
117     }
118 }

 

以上是关于面向过程的java日历的主要内容,如果未能解决你的问题,请参考以下文章

java题目,日历类,求助。

关于JAVA核心技术(卷一)读后的思考(对象与类,日历的构造)

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

Java面向对象

面向面试编程代码片段之GC