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
在这里插入图片描述

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 什么叫杂谈(e网杂谈)

    本文基于JDK1.8,使用的收集器为ParNew+CMS前言这篇文章的起因是这样的,在上周五凌晨很苦逼得参加双十一压测值班的时候,有个业务方突然打电话来说我们提供的客户端存在内存泄漏问题导致线上应用持续fullgc,本来已经快要睡着的我立马就精神起来了,一通排查,最终定位到了确实是客户端有个bug会导致部分数据会被一直持有进入老年代之后gc不掉,从而就导致了老年代的频繁gc,具…

  • 俞敏洪新东方的起步_新东方俞敏洪的故事

    俞敏洪新东方的起步_新东方俞敏洪的故事来源:国王与王后丨作者: 果子离啊数据猿官网|www.datayuan.cn今日头条丨一点资讯丨腾讯丨搜狐丨网易丨凤凰丨阿里UC大鱼丨新浪微博丨新浪看点丨百度百家丨博…

  • cholesky分解_java toarray方法

    cholesky分解_java toarray方法接着LU分解继续往下,就会发展出很多相关但是并不完全一样的矩阵分解,最后对于对称正定矩阵,我们则可以给出非常有用的cholesky分解。这些分解的来源就在于矩阵本身存在的特殊的结构。对于矩阵A,如果没有任何的特殊结构,那么可以给出A=L*U分解,其中L是下三角矩阵且对角线全部为1,U是上三角矩阵但是对角线的值任意,将U正规化成对角线为1的矩阵,产生分解A=L*D*U,D为对角矩阵。如果A为对…

    2022年10月24日
  • Lena.jpg 与图像处理的渊源

    Lena.jpg 与图像处理的渊源作为图像处理研究人员,相信大家一定认识下面这幅图片(下载自:https://en.wikipedia.org/wiki/Lenna):这就是Lenna本人了,全图是很sexy的,大家去看吧(http://www.lenna.org/full/l_hires.jpg)。熟悉图像处理或者压缩的工程师、研究人员和学生经常在他们的实验或者项目任务里使用“Lenna”或者“Lena”的图像。Lenna…

  • 读完了csapp(中文名:深入理解计算机系统)

    读完了csapp(中文名:深入理解计算机系统)

  • Maven – 解决Maven下载依赖包速度慢问题

    Maven – 解决Maven下载依赖包速度慢问题

发表回复

您的电子邮箱地址不会被公开。

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