码迷,mamicode.com
首页 > 编程语言 > 详细

面向过程的java日历

时间:2019-03-24 09:23:32      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:col   can   ++   判断   输入   oid   span   星期六   smo   

  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("星期天\t" + "星期一\t" + "星期二\t" + "星期三\t" + "星期四\t" + "星期五\t" + "星期六\t");
 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(" \t");
103         }
104         for (int m = 1; m <= DayOf_getMonth; m++) {
105             if (m < 10) {
106                 System.out.print(" " + m + "\t");
107             } else {
108                 System.out.print(m + "\t");
109             }
110             if ((isFlag + m) % 7 == 0) {
111                 System.out.println();
112 
113             }
114 
115         }
116 
117     }
118 }

 

面向过程的java日历

标签:col   can   ++   判断   输入   oid   span   星期六   smo   

原文地址:https://www.cnblogs.com/19322li/p/10586654.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!