java输入年月输出日历_Java万年历,输入年月获取该年月日历表

这是一个Java程序,用于输入年份和月份后,生成并打印出指定月份的日历表。程序首先计算输入年份距离1900年的总天数以及当年1月1日到输入月份的天数,然后根据计算结果确定该月的第一天是星期几,最后输出完整的日历表。
摘要由CSDN通过智能技术生成

//输入年份和月份,打印出这个月的日历表

/*

1.1900年1月1日是星期一

2.计算输入的年份距离1900年有多少天再计算当年1月1日距这个月有多少天

1)

3.总天数%7得出从星期几开始

注:计算机中的时间最小到1900年,此外UNIX系统认为1970年1月1日0点是时间纪元。

so,在本程序中不考了1900年以前的年份了。有兴趣的可以自己研究下。

*/

import java.util.Scanner;

class Calender{

public static void main(String[] args){

print();

}

//打印输出

public static void print(){

Scanner sc = new Scanner(System.in);

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

int year = sc.nextInt();

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

int month = sc.nextInt();

int days = getDays(year, month);//getDays方法详细请往下看

//days+1:day是总天数,输入月份的总天数只是这个月之前的天数,

//加上1变为这个月开始的第一天

int week = days%7==0?1:days%7+1;//开始的第一天是星期几

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

//输出第一行(第一个星期)空出来部分

for(int i=1; i<=week; i++){

System.out.print(" \t");

}

//输出第一行(第一个星期)各天

for(int i=1; i<=7-week; i++){

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

}

System.out.println();

//1~12月的个月天数

int monthDay = 0;

switch(month){

case 2:

if(year%4==0&&year%100!=0 || year%400==0 ){

monthDay=29;

}else{

monthDay=28;

}

break;

case 4:

case 6:

case 9:

case 11:

monthDay=30;

break;

default :

monthDay=31;

break;

}

//输出剩下的日期,从第二周开始了,所以是8-week

for(int i=8-week; i<=monthDay; i++){

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

//每七天换一行则当日期能整除7就换行

if((i+week)%7==0){

System.out.println();

}

}

}

/*

计算当年当月的距1900年1.1的总天数

*/

public static int getDays(int year, int month){

//判断这年是闰年或者平年,得到年的总天数

int day1=0, day2=0;

for(int i=1900; i

if(i%4==0&&i%100!=0 || i%400==0){

day1+=366;

}else{

day1+=365;

}

}

//得到月的总天数

for(int i=1; i

switch(i){

case 2:

if(year%4==0&&year%100!=0 || year%400==0 ){

day2+=29;

}else{

day2+=28;

}

break;

case 4:

case 6:

case 9:

case 11:

day2+=30;

break;

default :

day2+=31;

break;

}

}

return day1+day2;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值