展开全部

/*

题目:输出任意年份任意月份的日历表(公元后)

思路:

1.已知1年1月1日是星期日,1 % 7 = 1 对应62616964757a686964616fe4b893e5b19e31333361326239的是星期日,2 % 7 = 2 对应的是星期一,以此类推;

2.计算当年以前所有天数+当年当月1号之前所有天数;

a.年份分平年闰年,平年365天,闰年366天;

b.闰年的判断方法year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)若为真,则为闰年否则为平年;

c.定义平年/闰年数组,包含各月天数;

d.遍历数组求和,计算当年当月前总天数;

e.当年以前所有天数+当年当月前总天数+1即为1年1月1日到当年当月1日的总天数;

3.总天数对7取模,根据结果判断当月1号是星期几,输出空白区域;

4.输出当月日历表,逢星期六换行

*/

import java.util.Scanner;

class FindMonthList {

public static void main(String[] args){

Scanner sc = new Scanner(System.in);

System.out.println("请输入年份:");

int year = sc.nextInt();            //年份

if (year

System.out.println("输入错误!");

return;

}

System.out.println("请输入月份:");

int month = sc.nextInt();            //月份

if (month  12) {        //判断非法输入月份

System.out.println("输入错误!");

return;

}

//输出表头

System.out.println("-------" + year + " 年 " + month + " 月 " + "-------");

System.out.println();

System.out.println("日  一  二  三  四  五  六");

//计算当前年份以前所有天数beforeYearTotalDay;每4年一个闰年,闰年366天,平年365天

int beforeYearTotalDay = ((year - 1) / 4 * 366) + (year-1 - ((year - 1) / 4)) * 365;

int[] arrLeapYear = {0,31,29,31,30,31,30,31,31,30,31,30,31};    //闰年各月天数    int数组

int[] arrNormalYear = {0,31,28,31,30,31,30,31,31,30,31,30,31};    //平年各月天数    int数组

int beforeMonthTotalDay = 0;                                    //定义本年当月之前月份的总天数

if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) {    //判断当前年份是否是闰年

for (int i = 0 ; i

//计算当前月份之前的所有天数

beforeMonthTotalDay = beforeMonthTotalDay + arrLeapYear[i];

}

//判断当月1日是星期几

int totalDay = beforeYearTotalDay + beforeMonthTotalDay + 1;

int week = totalDay % 7;//已知1年1月1日是星期日,即模7得1对应的是星期日

for (int i = 0 ; i

System.out.print("    ");//输出开头空白

}

for (int i = 1 ;i <= arrLeapYear[month] ;i ++ ) {    //for循环输出各月天数

System.out.print(i + "  ");

if (i

System.out.print(" ");

}

if (i % 7 == ((7-(week - 1)) % 7 ) || i == arrLeapYear[month]) {//每逢星期六/尾数换行

System.out.println();

}

}

} else {        //不是闰年就是平年

for (int i = 0 ; i

beforeMonthTotalDay = beforeMonthTotalDay + arrNormalYear[i];

}

//判断当月1日是星期几

int totalDay = beforeYearTotalDay + beforeMonthTotalDay + 1;

int week = totalDay % 7;//已知1年1月1日是星期日,即模7得1对应的是星期日

for (int i = 0 ; i

System.out.print("    ");//输出开头空白

}

for (int i = 1 ;i <= arrNormalYear[month] ;i ++ ) {//for循环输出各月天数

System.out.print(i + "  ");

if (i

System.out.print(" ");

}

if (i % 7 == ((7-(week - 1)) % 7 ) || i == arrNormalYear[month]) {//每逢星期六/尾数换行

System.out.println();

}

}

}

}

}

效果:

java编写万年历_怎么用JAVA编写万年历!相关推荐

  1. 控制台编写JAVA程序教程_写一个java程序的步骤是什么?写java程序技巧

    写Java程序是要按照步骤来的,这样才能写好一个java程序,那么接下来,我们就来给大家讲解一下写一个java程序的步骤是什么? (1)创建Java项目:"FileàNewàProjectà ...

  2. java 安装包_手机也可以编写Java程序代码?这些黑科技你值得拥有!

    你是不是也很好奇酷炫的程序是如何运行,代码是如何实现的? 接下来就是见证奇迹的时刻,教你如何利用手机端写Java,详细步骤已上线! 第一步 在应用市场或者浏览器搜索AIDE,点击安装/下载. 第二步 ...

  3. java 异常机制_深入理解Java异常处理机制

    一.引子 try-catch-finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解.不过,我亲自体验的"教训"告诉我,这个东西可不是想象中 ...

  4. java 02-cf_cf活动如何设置java环境变量_如何设置java环境变量

    cf助手怎么连接wifi_连接无线网设置 对于刚刚学习java的win7用户来说,首先要学会安装jdk和配置java环境变量,这是学习java的唯一途径,否则编写的代码运行时会出现bug.关于这一点, ...

  5. java 内存排序_详细解析Java内存,处理器重排序,编译器重排序以及它对线程的影响...

    欢迎大家搜索"小猴子的技术笔记"关注我的公众号,有问题可以及时和我交流. 我们在编写程序的时候有一个编写代码的顺序,那么计算机执行的时候就是按照我们编写代码的顺序来执行的吗?答案是 ...

  6. java编程学习方法_在线学习Java编程的最佳方法

    java编程学习方法 1.简介 Java是使用最广泛的编程语言之一. 根据Github的最新报告 ,Java被列为仅次于JavaScript的第二大最常用的编程语言. 掌握Java的人有很多话题. 好 ...

  7. java桌面版_长大了Java! 提出Java桌面版

    java桌面版 不,这不是另一个" Java已死"的咆哮. Java非常活跃. 它是可用的最佳开发和运行时平台之一. 迄今为止,最稳定的平台. 那可能只是它最大的祸根. 荒谬! 稳 ...

  8. java实现递归算法_如何在Java中实现二进制搜索算法而无需递归

    java实现递归算法 by javinpaul 由javinpaul 流行的二进制搜索算法的迭代实现,用于在排序数组中查找元素. (An Iterative implementation of the ...

  9. 二级java考什么_计算机二级Java考试资料!

    Where领? 基本要求 1 . 掌握 Java 语言的特点、实现机制和体系结构。 2 . 掌握 Java 语言中面向对象的特性。 3 . 掌握 Java 语言提供的数据类型和结构。 4 . 掌握 J ...

  10. 树莓派Java程序运行_树莓派上Java程序作为linux服务并开机自动启动

    http://www.iigrowing.cn/shu_mei_pai_shang_java_cheng_xu_zuo_wei_linux_fu_wu_bing_kai_ji_zi_dong_qi_d ...

最新文章

  1. java regex
  2. npm package.json那些事
  3. 《Hadoop实战手册》一1.6 配置Sqoop以支持SQL Server
  4. Controls 属性与继承 TShape 类的小练习
  5. 多益网络 视频面试面试总结20180816
  6. C++设计模式-面向对象程序设计要点以及封装性特点
  7. PTA10、统计字符个数 (10 分)
  8. Python OOP:面向对象三大特性(封装、继承、多态)、类属性和实例属性、类方法@classmethod、静态方法@staticmethod、函数和类callable、__call__
  9. centos7中使用LVM管理磁盘和挂载磁盘
  10. KELl警告: MULTIPLE CALL TO SEGMENT
  11. 内联css加伪元素,使用CSS:前和:后内联CSS伪元素?(Using CSS :before and :after p
  12. 使用ffmpeg从视频中提取纯音频纯视频
  13. Unity3D鼠标控制摄像机“左右移动控制视角+WASD键盘控制前后左右+空格键抬升高度”脚本
  14. 申请高德地图开发key
  15. html关于图片缓慢放大
  16. 上层协议TCP/UDP
  17. 真相:为什么投简历总是没回音?
  18. 博图v15找不到许可证step7_添加PLC时出现“找不到许可证step7 basic”-工业支持中心-西门子中国...
  19. 有 ABCD 四个人要在夜里过一座桥,他们通过这座桥分别需要耗时 1、2、5、10 分钟,现在只有一支手电,过桥时必须带有手电,并且同时最多只能两个人一起过桥。请问如何安排能够让四个人尽快都过桥。
  20. Verilog MIPS32 CPU(六)-- MDU

热门文章

  1. python : 自定义可迭代类,__iter__ ,__next__的作用
  2. 解决本地工具无法连接服务器上的mysql的问题
  3. 学习进度条 20171202
  4. jQuery1.11源码分析(8)-----jQuery调用Sizzle引擎的相关API
  5. 跨浏览器(IE/FF/OPERA)JS代码小结
  6. WSS3.0自带的问题跟踪工作流(Issue Tracking)的说明
  7. NSArray 数组
  8. shell脚本编写保存
  9. ssh登录 The authenticity of host 192.168.0.xxx can't be established. 的问题
  10. redis学习篇(九)-----高级特性之事务处理