• 面向过程的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 }
  • 相关阅读:
    推箱子
    去掉两个最高分、去掉两个最低分,求平均分
    投票选班长
    彩票
    闰年、平年
    闹钟
    手机号抽奖
    for练习--侦察兵
    兔子、棋盘放粮食、猴子吃桃
    for练习--凑法
  • 原文地址:https://www.cnblogs.com/19322li/p/10586654.html
Copyright © 2020-2023  润新知