• java 面向过程实现万年历


      1 public class Test {
      2 
      3     /**
      4      * @param args
      5      */
      6     public static void main(String[] args) {
      7         // TODO Auto-generated method stub
      8         // 定义变量
      9         int year, mouth;
     10         int day = 0;
     11         String cuowu;
     12         Scanner sc = new Scanner(System.in);
     13         int[] day1 = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
     14         int[] day2 = new int[] { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
     15         int week, dayNum = 0;
     16 
     17         // 输出
     18         System.out.println("*******************欢迎使用万年历****************
    ");
     19         System.out.print("请选择年份:");
     20         // 判断是否输入我们需要的数据
     21         while (true) {
     22             if (sc.hasNextInt()) {
     23                 year = sc.nextInt();
     24                 if (year >= 1900) {
     25                     break;
     26                 } else {
     27                     System.out.print("输入数据不对请重新输入(1900年以后的年份)");
     28                 }
     29             } else {
     30                 System.out.print("数据类型错误请重新输入");
     31                 cuowu = sc.next();
     32             }
     33         }
     34 
     35         System.out.println();
     36         System.out.print("请选择月份:");
     37         while (true) {
     38             if (sc.hasNextInt()) {
     39                 mouth = sc.nextInt();
     40                 if (mouth > 0 && mouth < 13) {
     41                     break;
     42                 } else {
     43                     System.out.print("输入数据不对请重新输入(1~12)");
     44                 }
     45             } else {
     46                 System.out.print("数据类型错误请重新输入");
     47                 cuowu = sc.next();
     48             }
     49         }
     50         System.out.println();
     51         // 计算该年距离1900年1月1日有几天
     52         for (int i = 1900; i < year; i++) {
     53             if ((i / 400 == 0) || (i / 4 == 0 && i / 100 != 0)) {
     54                 day += 366;
     55             } else {
     56                 day += 365;
     57             }
     58         }
     59         // System.out.println(day);
     60         // 计算选择月份1日距离1900年1月1日有几天
     61         for (int i = 1; i < mouth; i++) {
     62             if ((year % 400 == 0) || ((year % 100 != 0) && (year % 4 == 0))) {
     63                 day += day2[i - 1];
     64             } else {
     65                 day += day1[i - 1];
     66             }
     67         }
     68         // System.out.println(day);
     69         // 计算该月第一天是星期几由于1900年1月1日是星期一,而我们打印从星期天开始,所以day+1
     70         week = (day + 1) % 7;
     71         // System.out.println(week);
     72         // 赋值dayNum该月有几天
     73         switch (mouth) {
     74         case 1:
     75         case 3:
     76         case 5:
     77         case 7:
     78         case 8:
     79         case 10:
     80         case 12:
     81             dayNum = 31;
     82             break;
     83         case 4:
     84         case 6:
     85         case 9:
     86         case 11:
     87             dayNum = 30;
     88             break;
     89         case 2:
     90             if ((year % 400 == 0) || ((year % 100 != 0) && (year % 4 == 0))) {
     91                 dayNum = 29;
     92             } else {
     93                 dayNum = 28;
     94             }
     95             break;
     96         default:
     97             break;
     98         }
     99         // 输出
    100         System.out.println("			" + year + "年" + mouth + "月");
    101         System.out.println("星期日	星期一	星期二	星期三	星期四	星期五	星期六");
    102         for (int i = 0; i < week; i++) {
    103             System.out.print("" + "	");
    104         }
    105         for (int i = 1; i <= dayNum; i++) {
    106             System.out.print(i + "	");
    107             if ((week + i) % 7 == 0) {
    108                 System.out.println();
    109             }
    110         }
    111 
    112     }
    113 
    114 }
  • 相关阅读:
    Gym
    数学公式头文件
    除法取模(比赛常用)
    ACM-ICPC 2017 Asia Urumqi A. Coins【期望dp】
    P1494 小Z的袜子 【普通莫队】
    Codeforces Round #642 (Div. 3) E—K-periodic Garland dp
    luogu P4568 [JLOI2011]飞行路线 最短路Dijkstra+dp
    luogu P2015 二叉苹果树 树形dp
    luogu P1462 通往奥格瑞玛的道路 二分+spfa
    luogu P1879 [USACO06NOV]Corn Fields G 状态压缩dp
  • 原文地址:https://www.cnblogs.com/panxinqi/p/6187277.html
Copyright © 2020-2023  润新知