思路:

1、算出当前月份的第一天与1900/1/1 的天数之差 day

2、将day%7得到当前月的第一天是星期几

3、循环打印日历

代码实现:

import java.util.Calendar;
import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner input = new Scanner(System.in);//1.万年历//实例化两个日历对象,一个设置为1900/1/1 一个设置为你要查询的日期Calendar calendar1 = Calendar.getInstance();Calendar calendar2 = Calendar.getInstance();//年、月int year,month;System.out.print("请输入年、月:");year = input.nextInt();month = input.nextInt();//分别设置两个日历的年份和月份calendar1.set(year,month,1);calendar2.set(1900,1,1);//月份从0开始,所以设置月份就需要月份-1calendar1.set(Calendar.MONTH,month-1);int day = getDaysBetween(calendar1,calendar2);//将天数差%7得到当前月份第一天是星期几day %= 7;System.out.println("一\t二\t三\t四\t五\t六\t日");//如果day%7==0,表示当前月份第一天是星期日if(day == 0)day=7;//输出day-1个\tfor(int i = 1; i < day; i++){System.out.print("\t");}//getActualMaximum 获得该月份中天数的最大值for(int i = 1; i <= calendar1.getActualMaximum(Calendar.DAY_OF_MONTH); i++){System.out.print(i + "\t");if((i+day-1)%7 == 0)      //当 (i+day-1)%7 == 0 时,表示当天为星期日,需要换行System.out.println();}}/*** 获得两个日期间天数差* @param day1   日期1   用户查询日期* @param day2  日期2 1900/1/1* @return 天数差*/public static int getDaysBetween(Calendar day1,Calendar day2){//得到当前时间在一年中的天数int days = day1.get(Calendar.DAY_OF_YEAR);//获得用户输入的年份int y1 = day1.get(Calendar.YEAR);//计算1900/1/1日 与 y1/1/1日的天数差if(day2.get(Calendar.YEAR) != y1){day2 = (Calendar)day2.clone();do{days += day2.getActualMaximum(Calendar.DAY_OF_YEAR);day2.add(Calendar.YEAR, 1);}while(day2.get(Calendar.YEAR) != y1);}return days;}
}

结果:

java实现简单万年历相关推荐

  1. java 简单万年历_JAVA实现的简单万年历代码

    本文实例讲述了JAVA实现的简单万年历.分享给大家供大家参考,具体如下: import java.util.Scanner; public class PrintCalendar { public s ...

  2. java 简单万年历_java简单万年历

    Java万年历源代码_幼儿读物_幼儿教育_教育专区.. import java.awt.*; import java.awt.event.*; import javax.swing.*; import ...

  3. java 简单万年历,java万年历简单实例

    本文实例讲述了JAVA实现的简单万年历. 实现思路具体如下: 已知1900年1月1日星期一判断是否闰年 指定年月返回当月的天数 返回一年的总天数 返回距离1900年1月到指定年月的上一个月的总天数 实 ...

  4. java简单通讯录的实现02person类_用java实现简单的小游戏(你一定玩过)

    用java实现简单的小游戏(你一定玩过) 对于java初学者来说,通过一些学习小游戏来对swing学习以及对java基础的学习是一个好的方法,同时也给学习带来了很多的乐趣,接下来就给大家分享一个jav ...

  5. java实现简单窗体小游戏----球球大作战

    java实现简单窗体小游戏----球球大作战 需求分析 1.分析小球的属性: ​ 坐标.大小.颜色.方向.速度 2.抽象类:Ball ​ 设计类:BallMain-创建窗体 ​ BallJPanel- ...

  6. Java JNI简单实现

    Java JNI简单实现 JNI(Java Native Interface)允许了Java和C&C++进行交互?这不折腾人嘛! 一.JNI简述 http://baike.baidu.com/ ...

  7. java实现账号单一ip登录,使用Java实现简单后台访问并获取IP示例

    使用Java实现简单后台访问并获取IP示例 发布时间:2020-10-28 21:57:57 来源:亿速云 阅读:92 作者:Leah 使用Java实现简单后台访问并获取IP示例?针对这个问题,这篇文 ...

  8. 用limit 实现java的简单分页

    https://blog.csdn.net/xinyuezitang/article/details/84324359 用limit 实现java的简单分页 xinyuezitang 2018-11- ...

  9. redis java应用_redis在JAVA的简单应用

    reids是一个高性能的key-value数据库.它存储的value支持各种类型的数据,如String,List,set,hash类型.在此基础上,各种不同方式的排序. 本文不具体争对redis数据库 ...

最新文章

  1. 谨慎的Waymo CEO:未来几十年,自动驾驶无法做到无处不在
  2. [Elasticsearch] 全文搜索 (一) - 基础概念和match查询
  3. win8.1 计算机放在桌面,Win8.1怎么把开始屏幕中的程序放到桌面?
  4. POI如何自定义单元格背景颜色
  5. ionic4 打包ios_学习Ionic 4并开始创建iOS / Android应用
  6. c语言作业题五六章答案,数据结构(C语言版)第五六章习题答案
  7. mysql 左连接 和全连接_mysql左连接,右连接,内连,全连
  8. php怎么连接数据库6,PHP连接数据库的步骤
  9. matlab虚拟现实之使用V-Realm Builder2建模
  10. bat中冒号的作用(注释 ,跳转, 截取、替换字符串)
  11. WINDOWS下获取目录环境变量的C代码
  12. web service中配置tcp/ip监视器
  13. 计算机附件中的超级终端,windows10系统中附件中没有超级终端怎么解决
  14. 基于Hadoop的hbase安装
  15. veeam安装和部署_Veeam Backup Replication 8 安装配置
  16. 全面拆解携程云原生实践,打造智能弹性的云端酒店直连系统!
  17. 边缘计算的架构、挑战与应用
  18. 我模仿了一个自助装机的页面,可是有一个功能一直实现不了。请求高手帮我看看。
  19. 智能手环guard日志获取-兔盯云
  20. Win10自带OpenSSH的使用

热门文章

  1. 2022大三计算机 | 保研面试 | 专业课(数据结构、计组等) 数学(离散等) | 资料整理
  2. 瀑布模型、快速原型模型、增量模型、螺 旋模型的优缺点,说明每种模型的使用范围
  3. 干电池升压IC,电流大,功耗低
  4. 2021牛客暑期多校训练营2 F Girlfriend (阿波罗尼斯圆+简单几何)
  5. java split 顺序_Java的split方法说明
  6. OpenGL Partical System by Transform Feedback
  7. DevOps黄了,平台工程火了?非也!
  8. vm虚拟机安装网络适配器驱动卡死/无响应/无限等待状态
  9. 坝上草原及闪电湖两日游流水帐:)
  10. GBASE风采|南大通用与天津农商行羽毛球联谊赛圆满举行