java 做日历_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();

}

}

//效果预览

//

8215782e636be726b65fd85f95c43842.png

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值