import java.util.Scanner;

class CalendarMain
{
    //主函数入口
    public static void main(String[] args)
    {
        System.out.println("*****请输入日期(格式如: 2011-01)*****");
        Scanner sc = new Scanner(System.in);
        String ym = sc.next();
        //截取字符串
        String[] yearMonth = ym.split("-");
        //将字符串转化成整型
        int year = Integer.parseInt(yearMonth [0]);
        int month = Integer.parseInt(yearMonth [1]);
        Year.fun(year);
        Month.fun(month,year);
    }
}

//获取闰年个数
class Year
{
    //多少个闰年
    static int leapYear = 0;

    public static void fun(int year){
        if(year > 1990 && year <10000){
            while(year >= 1990){
                if(year % 4 == 0 && year % 100 != 0 || (year % 400 ==0 )){
                    leapYear ++;
                }
                year --;
            }
        }else{
            System.out.println("请输入查询的年份大于或等于1990年!");
        }
    }
}

//获取一个月多少天和总天数
class Month
{
    public static void fun(int month,int year){
        int monthDay = 0;
        Year y = new Year();
        int days = y.leapYear + (year - 1990)*365;
        if(month > 0 && month <=12){
            for(int i = 1;i <= month;i++){
                if(i < 8 && i != 2){
                    days += i % 2 == 1 ? 31 :30;
                    monthDay = i % 2 == 1 ? 31 :30;
                }
                if(i > 7){
                    days += i % 2 == 1 ? 30 :31;
                    monthDay  = i % 2 == 1 ? 30 :31;
                }
                if(i == 2){
                    if(year % 4 == 0 && year % 100 != 0 || (year % 400 ==0 )){
                        days += 28;
                        monthDay = 29;
                    }else{
                        days += 28;
                        monthDay = 28;
                    }
                }
            }
            Show.mothed(days,monthDay);
        }else{
             System.out.println("请输入正确的月份!");
        }
    }
}

//显示日历
class Show
{
    public static void mothed(int days, int monthDay){
          //加一表示从星期一开始
          int week = (days - monthDay) % 7 + 1;

          System.out.println("\n周日"+"\t周一"+"\t周二"+"\t周三"+"\t周四"+"\t周五"+"\t周六");
          for (int i = 1;i <= monthDay + week ;i++ )
          {
              if(i <= week){
                  System.out.print(" "+"*"+"\t");
              }else{
                  if((i-week) < 10){
                       System.out.print(" "+(i-week)+"\t");
                    }else{
                       System.out.print((i-week)+"\t");
                     }
              }      
             if(i%7 == 0){
                  System.out.print("\n");
                 }
          }
    }
}

java日历显示年份、月份的更多相关文章

  1. java 获取当前年份 月份,当月第一天和最后一天

    获取当前年份 月份,当月第一天和最后一天,工作中会经常用到,下面是代码: package basic.day01; import java.text.SimpleDateFormat; import ...

  2. Java实现指定年份月份的日历表

    输入指定的年份与月份,看这个月的日历表 package Xueying_Liu; import java.util.Scanner; public class rilibiao { public st ...

  3. java 获取当前年份 月份 日期

    import java.util.Calendar; public class Main {  public static void main(String[] args) {    Calendar ...

  4. 在页面中添加两个 <select> 标签,用来显示年份和月份;同时添加两个 <ul> 标签,一个用来显示星期,另一个用来显示日期 在 JavaScript 脚本中动态添加年份和月份,获取当前日期的年份

    查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的 Date 对象,在页面上显示一个万年历.选择不同的年份和月份,在页面中显示当前月的日历 实现思路: 在页面中添加两个 <s ...

  5. Java-Runoob-高级教程-实例-时间处理:03. Java 实例 - 获取年份、月份等

    ylbtech-Java-Runoob-高级教程-实例-时间处理:03. Java 实例 - 获取年份.月份等 1.返回顶部 1. Java 实例 - 获取年份.月份等  Java 实例 以下实例演示 ...

  6. Java如何以(MMM)格式显示一个月份的名称?

    JAVA中,如何以(MMM)格式显示一个月份的名称? 此示例显示如何使用Calender类的Calender.getInstance()方法和Formatter类的fmt.format()方法来显示( ...

  7. java获取当前年份、月份和日期字符串等

    Java获取当前年份.月份和日期是通过Calendar类的实例对象来获取的. 首先创建一个Calendar类的实例对象,Calendar类属于java.util包. Calendar calendar ...

  8. Java如何显示一年的周数?

    在Java中,如何查找一年中或一个月中的第几个星期? 以下示例显示年份和月份的第几周. package com.yiibai; import java.util.*; public class Dis ...

  9. JDK神坑:JAVA中Calendar的月份Month少1

    很多朋友在使初次使用Calendar时,会发现月份莫名其妙对不上,显示的结果总是比预期中小1个月,检查好几遍也没发现程序有错,于是开始抓狂.其实这个时候,只要去看JDK就会明白问题所在.JDK告诉我们 ...

随机推荐

  1. 任意多边形切割/裁剪(附C#代码实现)

    本实现主要参考了发表于2003年<软件学报>的<一个有效的多边形裁剪算法>(刘勇奎,高云,黄有群)这篇论文,所使用的理论与算法大都基于本文,对论文中部分阐述进行了详细解释,并提 ...

  2. 细说websocket - php篇

    下面我画了一个图演示 client 和 server 之间建立 websocket 连接时握手部分,这个部分在 node 中可以十分轻松的完成,因为 node 提供的 net 模块已经对 socket ...

  3. Entity Framework 6 Recipes 2nd Edition(10-1)译->非Code Frist方式返回一个实体集合

    存储过程 存储过程一直存在于任何一种关系型数据库中,如微软的SQL Server.存储过程是包含在数据库中的一些代码,通常为数据执行一些操作,它能为数据密集型计算提高性能,也能执行一些为业务逻辑. 当 ...

  4. Java常量的应用

    所谓常量,我们可以理解为是一种特殊的变量,它的值被设定后,在程序运行过程中不允许改变. 语法:final 常量名 = 值; 使用fianl关键字 常量名 值 final String a1 = &qu ...

  5. ★Kali信息收集~ 5.The Harvester:邮箱挖掘器

    官网:http://www.edge-security.com 安装:apt-get install theHarvester 运行:终端输入 theharvester (小写) 用法+参数:(返回邮 ...

  6. ASP.NET OAuth:解决refresh token无法刷新access token的问题

    最近同事用iOS App调用Open API时遇到一个问题:在access token过期后,用refresh token刷新access token时,服务器响应"invalid_gran ...

  7. J2EE 项目读写分离

    先回答下 1.为啥要读写分离? 大家都知道最初开始,一个项目对应一个数据库,基本是一对一的,但是由于后来用户及数据还有访问的急剧增多, 系统在数据的读写上出现了瓶颈,为了让提高效率,想读和写不相互影响 ...

  8. linux内核调试技术之自构proc

    1.简介 在上一篇中,在内核中使用printk可以讲调试信息保存在log_buf缓冲区中,可以使用命令 #cat /proc/kmsg  将缓冲区的数区的数数据打印出来,今天我们就来研究一下,自己写k ...

  9. ASP.NET Core 中文文档 第四章 MVC(3.2)Razor 语法参考

    原文:Razor Syntax Reference 作者:Taylor Mullen.Rick Anderson 翻译:刘怡(AlexLEWIS) 校对:何镇汐 什么是 Razor? Razor 是一 ...

  10. MyCat源码分析系列之——SQL下发

    更多MyCat源码分析,请戳MyCat源码分析系列 SQL下发 SQL下发指的是MyCat将解析并改造完成的SQL语句依次发送至相应的MySQL节点(datanode)的过程,该执行过程由NonBlo ...