java打印指定年月份的日历

 更新时间:2019年07月31日 11:42:08   作者:塔城就是个弟弟  
这篇文章主要为大家详细介绍了java打印指定年、指定月份的日历,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了java打印指定年月份日历的具体代码,供大家参考,具体内容如下

做了一个小的日历打印,没有使用数组,所以不能对日期进行操作,用了单个for循环打印,对初学者来说应该好理解点

工具类:

import java.util.Calendar;

public class DaysTool {
 private int year;
 private int month;
 public DaysTool(){}
 public DaysTool(int year ,int month){
 this.year = year;
 this.month = month;
 }

 /**
 * 根据年份和月份来得到打印月份的第一天是周几
 * @return 是一周的周几
 */
 public int WhatWeekDay(){

 //创建Calendar对象
 Calendar calendar = Calendar.getInstance();
 //设置calendar对象的年
 calendar.set(Calendar.YEAR,this.year);
 //设置calendar对象的月份 ,因为此处的月份是从零开始(0-11表示1-12月),所以我们输入的数值要减去1才是正确的月份
 //(比如输入8月,接收数值 8 ,但是因为Calendar的特殊月份计数, 8 代表的是"9月",所以减去 1 为 7 ,才是正确的 8月)
 calendar.set(Calendar.MONTH,this.month-1);
 //设置日期为打印月的第一天
 calendar.set(Calendar.DATE, 1);
 //用get方法获取这一天是周几
 int whatDay = calendar.get(Calendar.DAY_OF_WEEK);
 //Calendar从周日开始到周六结束,用1-7表示,这里为了方便,把其数值减 1 ,得到周日到周六为 0 - 6 只需特殊处理周日即可
 return whatDay-1; //得出这个月的第一天是周几
 }

 public int WhatDayOfMonth(){
 //实例化Calendar对象
 Calendar calendar = Calendar.getInstance();
 //设置为打印年打印月的下一个月(参考WhatWeekDay方法中的月份注释 ,这里没减1)第一天.
 //例:输入 2018 2 其实为2018年的3月
 calendar.set(this.year,this.month,1);
 //使上面的日期退一天 得到打印月
 calendar.add(Calendar.DATE,-1);
 //获取日的数值
 int monthDay =calendar.get(Calendar.DATE);
 return monthDay;
 }

 public int getYear() {
 return year;
 }

 public void setYear(int year) {
 this.year = year;
 }

 public int getMouth() {
 return month;
 }

 public void setMouth(int mouth) {
 this.month = mouth;
 }
}

主类(包含了打印工具类)

import java.util.Scanner;

public class PrintCalendar {
 public static void main(String[] args) {
 //接收键盘录入年份和月份
 Scanner scanner = new Scanner(System.in);
 System.out.print("请输入需要打印的年份: ");
 int year = scanner.nextInt();
 System.out.print("请输入需要打印的月份: ");
 int month = scanner.nextInt();
 //创建日历工具类对象,并用带参构造初始化
 DaysTool dt = new DaysTool(year,month);
 //实例化打印工具类对象
 PrintDayTool pd = new PrintDayTool();
 System.out.println(String.format("\n即将打印%d年%d月日历",year,month)+"\n");
 System.out.println("========================================================\n");
 //调用打印工具类对象的printDay方法,传入年和月份
 pd.printDay(dt.WhatDayOfMonth(),dt.WhatWeekDay());
 System.out.println("========================================================");
 }

}
class PrintDayTool{
 //
 /**
 * 打印日历方法,
 * @param daysOfMouth 传入参数,确定打印月份的天数
 * @param whatDay 传入参数,确定打印月份的第一天是周几
 */
 public void printDay(int daysOfMouth,int whatDay){
 int count = 0; //定制计数标记
 System.out.print("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
 //j从1开始 到这个月的天数结束
 for(int j = 1 ; j <= daysOfMouth ; j ++){
  count++;
  //每打印七天就换行
  if(count % 7 == 1){
  System.out.print("\n\n");
  }
  //如果这月的第一天是周日就把它置为0 不打印额外制表符
  if(whatDay==7)
  whatDay = 0;
  //这个月的第一天是周几就额外打印几次制表符
  while (whatDay>0){
  System.out.print("\t\t");
  whatDay--;
  count++;
  }
  //打印天数
  System.out.print(j+"\t\t");
 }
 //打印完日历换行
 System.out.println("\n");
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 一篇文章教你将JAVA的RabbitMQz与SpringBoot整合

    一篇文章教你将JAVA的RabbitMQz与SpringBoot整合

    这篇文章主要介绍了如何将JAVA的RabbitMQz与SpringBoot整合,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-09-09
  • java AOP原理以及实例用法总结

    java AOP原理以及实例用法总结

    在本篇文章里我们给大家整理了关于java AOP原理以及相关知识点总结,正在学习的朋友们参考下。
    2019-05-05
  • Jenkins配置jdk、maven、git方式

    Jenkins配置jdk、maven、git方式

    为了在Jenkins中使用Java、Maven和Git,需要在系统管理的全局工具配置中设置这些工具,首先,确保Jenkins主机已经安装了JDK、Git、Maven以及Maven的settings文件,安装完成后,按照提示配置各个工具
    2023-04-04
  • Java进阶知识之反射的概念与获取方法

    Java进阶知识之反射的概念与获取方法

    这篇文章主要给大家介绍了关于Java进阶知识之反射的概念与获取方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Java设置JSON字符串参数编码的示例详解

    Java设置JSON字符串参数编码的示例详解

    在Java中创建JSON字符串,我们可以使用多个库,其中最流行的是Jackson、Gson和org.json,,下面给大家分享Java设置JSON字符串参数编码的示例,感兴趣的朋友一起看看吧
    2024-06-06
  • SpringBoot接口防重复提交的三种解决方案

    SpringBoot接口防重复提交的三种解决方案

    在Web开发中,防止用户重复提交表单是一个常见的需求,用户可能会因为网络延迟、误操作等原因多次点击提交按钮,导致后台接收到多个相同的请求,本文将介绍几种在Spring Boot中实现接口防重复提交的方法,需要的朋友可以参考下
    2024-11-11
  • RocketMQ整合SpringBoot实现生产级二次封装

    RocketMQ整合SpringBoot实现生产级二次封装

    本文主要介绍了RocketMQ整合SpringBoot实现生产级二次封装,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Spring boot框架下的RabbitMQ消息中间件详解

    Spring boot框架下的RabbitMQ消息中间件详解

    这篇文章详细介绍了Spring Boot框架下的RabbitMQ消息中间件的基本概念、消息传输模型、环境准备、Spring Boot集成以及消息生产和消费,感兴趣的朋友跟随小编一起看看吧
    2025-01-01
  • 一篇文章带你入门Java变量

    一篇文章带你入门Java变量

    这篇文章主要介绍了Java变量,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • SpringBoot项目中公共字段填充的实现

    SpringBoot项目中公共字段填充的实现

    本文主要介绍了SpringBoot项目中公共字段填充的实现,利用SpringBoot的Aop思想和自定义注解和反射机制的方法来实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10

最新评论