java中calendar类打印日历_输入年份和月份求天数

java中calendar类打印日历_输入年份和月份求天数题目题目另可表述为:1.输入一个年份和月份,按格式输出此月份的日历2.以如下格式输出一个月份的日历代码实现1.Calendar类的一些说明Calendar类是一个抽象类,不能通过new的方式来获得实例,可以使用类方法getInstance()返回一个Calendar的子类对象.Calendarcalendar=Calendar.getInstance();…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

题目

题目另可表述为:
1.输入一个年份和月份,按格式输出此月份的日历
2.以如下格式输出一个月份的日历
在这里插入图片描述

代码实现

1.Calendar类的一些说明

Calendar类是一个抽象类,不能通过new的方式来获得实例,可以使用类方法getInstance()返回一个Calendar的子类对象.

        Calendar calendar = Calendar.getInstance();

Calendar类的操作需要首先设定日期:

        calendar.set(year, month - 1, day);

由于Java中月份从0月开始计数,所以真实月份12月(month=12) 需要减1 才是Java中的12月

在输出日历时,只需要关注本月第一天是星期几即可,例如图中
2015年8月1日对应星期六.
在这里插入图片描述
这里使用方法

int startDay=calendar.get(Calendar.DAY_OF_WEEK);

得到startDay=7.说明2015年8月1日是本周的第7天.
Java中规定了每周第一天是星期日,所以星期日=1,星期一=2…星期六=7

2.天数的判断

月份有大小月之分,其中大月31天,小月30天,特殊的2月有28天.闰年2月有29天.

    public static int maxDayInMonth(int year, int month) { 
   
        int max = 30;
        if (month == 1 | month == 3 | month == 5 | month == 7 | month == 8 | month == 10 | month == 12) max = 31;
        else if (month == 2) max = 28;
        else if (month == 2 & (year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) max = 29;
        return max;
    }

3.空格补全

在这里插入图片描述
如果第一天是星期六, 需要将第一周的前6天用空格补全,代表前6天来自于9月份的25-30日.

    public static void fillSpace(int startDay) { 
   
        for (int i = 1; i < startDay; i++) { 
   
            System.out.printf("%4s", " ");
        }
    }

4.日历的输出

public static void printCalender() { 
   
        int year = 2015;
        int month = 8;
        //input
        Calendar calendar = Calendar.getInstance();
        calendar.set(year, month - 1, 1);
        int startDay = calendar.get(Calendar.DAY_OF_WEEK); //求本周第一天是星期几
        int count = startDay - 1; //第一周的初始计数
        int maxDay = maxDayInMonth(year, month);
        System.out.println("Sun Mon Tue Wed Thu Fri Sat");
        fillSpace(startDay);
        for (int i = 1; i <= maxDay; i++) { 
   
            System.out.printf("%3d%s", i, " "); //使用printf函数进行格式对齐
            count++;
            if (count >= 7) { 
    //每输出7天换一次行
                count = 0;
                System.out.print('\n');
            }
        }
    }

完整代码

import java.util.Calendar;

public class LittleCode_3 { 
   

    public static void printCalender() { 
   
        int year = 2015;
        int month = 8;
        //input
        Calendar calendar = Calendar.getInstance();
        calendar.set(year, month - 1, 1);
        int startDay = calendar.get(Calendar.DAY_OF_WEEK); //求本周第一天是星期几
        int count = startDay - 1; //第一周的初始计数
        int maxDay = maxDayInMonth(year, month);
        System.out.println("Sun Mon Tue Wed Thu Fri Sat");
        fillSpace(startDay);
        for (int i = 1; i <= maxDay; i++) { 
   
            System.out.printf("%3d%s", i, " "); //使用printf函数进行格式对齐
            count++;
            if (count >= 7) { 
    //每输出7天换一次行
                count = 0;
                System.out.print('\n');
            }
        }
    }

    public static void fillSpace(int startDay) { 
   
        for (int i = 1; i < startDay; i++) { 
   
            System.out.printf("%4s", " ");
        }
    }

    public static int maxDayInMonth(int year, int month) { 
   
        int max = 30;
        if (month == 1 | month == 3 | month == 5 | month == 7 | month == 8 | month == 10 | month == 12) max = 31;
        else if (month == 2) max = 28;
        else if (month == 2 & (year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) max = 29;
        return max;
    }

    public static void main(String[] args) { 
   
        printCalender();
    }
}

输出结果

输入year=2015 month=8
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193281.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java的json解析几种方法_java读取json文件并解析

    java的json解析几种方法_java读取json文件并解析微信搜索关注“咖啡遇上代码”公众号,查看更多一、什么是JSONJSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于阅读和编写,同时也易于解析和生成,并有效地提升网络传输效率。二、JSON语法(1)数据在名称/值对中(2)数据由逗号分隔(3)大括号保存对象(4)中括号保存数…

    2022年10月5日
    0
  • COM编程之三 QueryInterface

    COM编程之三 QueryInterface【1】IUnknown接口客户同组件交互都是通过接口完成的。在客户查询组件的其它接口时,也是通过接口完成的。而那个接口就是IUnknown。IUnknown接口的定义包含在Win32SDK中的UNKNEN.h头文件中。引用如下:1interfaceIUnknown2{3virtualHRESULT__stdcallQueryInterface(const…

    2022年6月23日
    22
  • python打包exe的方法

    cxfreeze,pyinstaller,py2exe三种方式cxfreeze最简单,安装后脚本在python_home\Scripts下面执行pythoncxfreeze全路径要打包的py文件 –target-dir

    2022年4月8日
    25
  • ldd命令 ubuntu_Linux ldd 命令 command not found ldd 命令详解 ldd 命令未找到 ldd 命令安装 – CommandNotFound ⚡️ 坑否…[通俗易懂]

    ldd命令 ubuntu_Linux ldd 命令 command not found ldd 命令详解 ldd 命令未找到 ldd 命令安装 – CommandNotFound ⚡️ 坑否…[通俗易懂]显示行号|选择喜欢的代码风格默认GitHubDuneLakeSidePlateauVibrantBlueEightiesTranquilldd命令打印程序和库的共享库依赖项。注意:ldd不是一个可执行程序,而只是一个Shell脚本。ldd命令安装:-bash:ldd:commandnotfound#Debianapt-getinstalllibc-bin#Ubuntuapt-…

    2022年6月2日
    140
  • JS后退, JS返回上一页, JS返回下一页

    JS后退, JS返回上一页, JS返回下一页
    Javascript返回上一页:
    1. history.go(-1),返回两个页面:history.go(-2);
    2. history.back(). 
    3. window.history.forward()返回下一页
    4. window.history.go(返回第几页,也可以使用访问过的URL)  
     例:
    向上一页 
    respons

    2022年7月25日
    7
  • ArcGIS与地理加权回归GWR【一】「建议收藏」

    ArcGIS与地理加权回归GWR【一】「建议收藏」公众号原文ArcGIS与地理加权回归GWR【一】https://mp.weixin.qq.com/s/fMPYxO3G7ff2192ZQICN-A开个新坑啊,写一写关于地理加权回归基础的东西(深了我也不会啊),希望也能用通俗的语言来记录一下我以前学习空间统计过程中的理解。1.传统线性回归不管你有没有系统学习过,对于线性回归,相信多少都有那么点了解。回归分析实质上就是研究一个或多个自变量X对一个因变量Y的影响关系情况,如研究各地房价影响因素。X1-Xn是n个自变量,β0-βn是未

    2022年10月7日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号