java编写万年历_怎么用JAVA编写万年历!
展开全部
/*
题目:输出任意年份任意月份的日历表(公元后)
思路:
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编写万年历!相关推荐
- 控制台编写JAVA程序教程_写一个java程序的步骤是什么?写java程序技巧
写Java程序是要按照步骤来的,这样才能写好一个java程序,那么接下来,我们就来给大家讲解一下写一个java程序的步骤是什么? (1)创建Java项目:"FileàNewàProjectà ...
- java 安装包_手机也可以编写Java程序代码?这些黑科技你值得拥有!
你是不是也很好奇酷炫的程序是如何运行,代码是如何实现的? 接下来就是见证奇迹的时刻,教你如何利用手机端写Java,详细步骤已上线! 第一步 在应用市场或者浏览器搜索AIDE,点击安装/下载. 第二步 ...
- java 异常机制_深入理解Java异常处理机制
一.引子 try-catch-finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解.不过,我亲自体验的"教训"告诉我,这个东西可不是想象中 ...
- java 02-cf_cf活动如何设置java环境变量_如何设置java环境变量
cf助手怎么连接wifi_连接无线网设置 对于刚刚学习java的win7用户来说,首先要学会安装jdk和配置java环境变量,这是学习java的唯一途径,否则编写的代码运行时会出现bug.关于这一点, ...
- java 内存排序_详细解析Java内存,处理器重排序,编译器重排序以及它对线程的影响...
欢迎大家搜索"小猴子的技术笔记"关注我的公众号,有问题可以及时和我交流. 我们在编写程序的时候有一个编写代码的顺序,那么计算机执行的时候就是按照我们编写代码的顺序来执行的吗?答案是 ...
- java编程学习方法_在线学习Java编程的最佳方法
java编程学习方法 1.简介 Java是使用最广泛的编程语言之一. 根据Github的最新报告 ,Java被列为仅次于JavaScript的第二大最常用的编程语言. 掌握Java的人有很多话题. 好 ...
- java桌面版_长大了Java! 提出Java桌面版
java桌面版 不,这不是另一个" Java已死"的咆哮. Java非常活跃. 它是可用的最佳开发和运行时平台之一. 迄今为止,最稳定的平台. 那可能只是它最大的祸根. 荒谬! 稳 ...
- java实现递归算法_如何在Java中实现二进制搜索算法而无需递归
java实现递归算法 by javinpaul 由javinpaul 流行的二进制搜索算法的迭代实现,用于在排序数组中查找元素. (An Iterative implementation of the ...
- 二级java考什么_计算机二级Java考试资料!
Where领? 基本要求 1 . 掌握 Java 语言的特点、实现机制和体系结构。 2 . 掌握 Java 语言中面向对象的特性。 3 . 掌握 Java 语言提供的数据类型和结构。 4 . 掌握 J ...
- 树莓派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 ...
最新文章
- java regex
- npm package.json那些事
- 《Hadoop实战手册》一1.6 配置Sqoop以支持SQL Server
- Controls 属性与继承 TShape 类的小练习
- 多益网络 视频面试面试总结20180816
- C++设计模式-面向对象程序设计要点以及封装性特点
- PTA10、统计字符个数 (10 分)
- Python OOP:面向对象三大特性(封装、继承、多态)、类属性和实例属性、类方法@classmethod、静态方法@staticmethod、函数和类callable、__call__
- centos7中使用LVM管理磁盘和挂载磁盘
- KELl警告: MULTIPLE CALL TO SEGMENT
- 内联css加伪元素,使用CSS:前和:后内联CSS伪元素?(Using CSS :before and :after p
- 使用ffmpeg从视频中提取纯音频纯视频
- Unity3D鼠标控制摄像机“左右移动控制视角+WASD键盘控制前后左右+空格键抬升高度”脚本
- 申请高德地图开发key
- html关于图片缓慢放大
- 上层协议TCP/UDP
- 真相:为什么投简历总是没回音?
- 博图v15找不到许可证step7_添加PLC时出现“找不到许可证step7 basic”-工业支持中心-西门子中国...
- 有 ABCD 四个人要在夜里过一座桥,他们通过这座桥分别需要耗时 1、2、5、10 分钟,现在只有一支手电,过桥时必须带有手电,并且同时最多只能两个人一起过桥。请问如何安排能够让四个人尽快都过桥。
- Verilog MIPS32 CPU(六)-- MDU
热门文章
- python : 自定义可迭代类,__iter__ ,__next__的作用
- 解决本地工具无法连接服务器上的mysql的问题
- 学习进度条 20171202
- jQuery1.11源码分析(8)-----jQuery调用Sizzle引擎的相关API
- 跨浏览器(IE/FF/OPERA)JS代码小结
- WSS3.0自带的问题跟踪工作流(Issue Tracking)的说明
- NSArray	数组
- shell脚本编写保存
- ssh登录 The authenticity of host 192.168.0.xxx can't be established. 的问题
- redis学习篇(九)-----高级特性之事务处理