java编程实现日历
package com.beiwo.other;
/*
* 需求:输入一个年份和月份 ,显示当前月日情况 ,星期数要对应准确
* 1.1900年1月1号开始
* 2.星期 : 直接用总天数对7求余数 31 28 59 / 7 = 5
* 3.以\t来个开
*/
public class Demo4 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Demo4 demo = new Demo4();
//输入你要查询的年月
demo.show(1900,3);
}
//定义一个工具方法:判断平年还是闰年
public boolean isLeapYear(int year){
if(year % 400 == 0 || (year % 4==0 && year % 100 != 0)){
return true;
}
return false;
}
//计算输入年份下,月份的总天数 1900
public int getTotalDateFrom(int year , int month){
//1.定年份的总天数
int totalDate = 0;//1900到你输入的年份的总天数 2016 1900 - 1903 = 3
for(int i= 1900 ; i < year ;i++){
if(isLeapYear(i)){ // 闰年
totalDate += 366;
}else {
totalDate += 365;
}
}
//2.计算月份的天数
for(int i = 1 ; i< month ;i++){
totalDate += getDayOfMonth(year, i);
}
return totalDate;
}
public int getDayOfMonth(int year , int month){
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 4:
case 6:
case 9:
case 11:
return 30;
case 2:
if(isLeapYear(year)){
return 29;
}else {
return 28;
}
default:
return 30;
}
}
public int printSpace(int year , int month){
return getTotalDateFrom(year, month) % 7;
}
public void print(int year , int month){
int countSpac = printSpace(year, month) + 1; // 空格的个数
int count = 0; //定义一个计数
for(int i = 1; i<=countSpac; i++){
count++;
System.out.print("\t");
}
//2.打印日期
for(int i = 1 ; i<=getDayOfMonth(year, month);i++){
if(count % 7 == 0){
System.out.println();
}
count++;
System.out.print(i+"\t");
}
}
public void show(int year , int month){
System.out.println("******************"+year+"****"+month+"***************");
System.out.println("======================================================");
System.out.println("日\t一\t二\t三\t四\t五\t六");
System.out.println("======================================================");
print(year, month);
System.out.println();
}
}
//效果预览
//
java编程实现日历的更多相关文章
- Java编程的逻辑 (95) - Java 8的日期和时间API
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...
- Java编程的逻辑 (32) - 剖析日期和时间
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...
- Java编程的逻辑 (33) - Joda-Time
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...
- Java编程兵书
<Java编程兵书> 基本信息 作者: 桂颖 任昱衡 丛书名: 程序员藏经阁 出版社:电子工业出版社 ISBN:9787121207419 上架时间:2013-8-26 出版日期:2013 ...
- Java编程最差实践常见问题详细说明(2)转
Java编程最差实践常见问题详细说明(2)转 2012-12-13 13:57:20| 分类: JAVA | 标签:java |举报|字号 订阅 反射使用不当 错误的写法: Java代 ...
- JAVA编程思想(第四版)学习笔记----4.8 switch(知识点已更新)
switch语句和if-else语句不同,switch语句可以有多个可能的执行路径.在第四版java编程思想介绍switch语句的语法格式时写到: switch (integral-selector) ...
- 《Java编程思想》学习笔记(二)——类加载及执行顺序
<Java编程思想>学习笔记(二)--类加载及执行顺序 (这是很久之前写的,保存在印象笔记上,今天写在博客上.) 今天看Java编程思想,看到这样一道代码 //: OrderOfIniti ...
- #Java编程思想笔记(一)——static
Java编程思想笔记(一)--static 看<Java编程思想>已经有一段时间了,一直以来都把笔记做在印象笔记上,今天开始写博客来记录. 第一篇笔记来写static关键字. static ...
- [Java编程思想-学习笔记]第3章 操作符
3.1 更简单的打印语句 学习编程语言的通许遇到的第一个程序无非打印"Hello, world"了,然而在Java中要写成 System.out.println("He ...
随机推荐
- bahuanghou111
#include<stdio.h> int map[8][8]={0}; int count=0; int safe(int x,int y) { int i; int j; for(i= ...
- 常用数据库的驱动程序及JDBC URL:
Oracle数据库: 驱动程序包名:ojdbc14.jar 驱动类的名字:oracle.jdbc.driver.OracleDriver JDBC URL:jdbc:oracle:thin:@dbip ...
- objective-c static变量的使用总结
在java中,我们经常使用的是单例模式,这些设计模式在ios开发中也比较常用,最近也在考虑使用在ios开发中使用单例模式 在objective-c中,需要在.m文件里面定义个static变量来表示全局 ...
- 常用数据存储集合与Map
一.常见的数据存储实现 二.遍历 1.集合 新循环 迭代器 Iterator Iterator<?> it = C.iterator(); // 问.取.删 it.hasNext() ...
- 解决Rational Rose 中 没有 Data modeler 选项的问题
在 Rose 没有 Data modeler 选项的原因是没有将 Data modeler 这块功能勾选上. 解决方案: 菜单栏--Add-Ins--Add-Ins Manager-->找到 ...
- vmware rdm
RDM即裸磁盘映射,基本思想就是将host的磁盘直接映射给虚拟机使用 需要讨论的是: 1.rdm磁盘是否允许设置为共享,即可以映射给多个虚拟机使用(vmware不可用) 在 vSphere W ...
- IE8文件下载启用
在IE8的浏览器中,需要进行一些设置 Internet选项→安全→本地Intranet→自定义级别→下载→文件下载→启用 禁用迅雷下载:工具栏和扩展→迅雷下载支持→右键禁用
- SSIS 连接ORACLE 无法从 SQL 命令中提取参数的解决方案
第一步: 定义包变量:maxdate 类型为String 定义包变量:sqlStatement类型为String,值为:select * from i_out_serv_mon 第二步: 取&q ...
- C#下没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))
C#下没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG)) 原因:没有原生支持64位,而是以32位兼容方式运行 解决办法:在项目属性里设置“生成” ...
- 使用flume-ng聚合双活Nginx日志
前不久使用Keepalived搭建了Nginx双活代理服务器,以达到一个公网IP后支持多个云主机的多个域名网站的目的.完成后又想在这双活的Nginx上有所有访问网站的日志,之前有了解过Google A ...