您的位置:首页 > 编程语言 > Java开发

万年历(java实现)

2015-06-09 16:06 501 查看
设计思路

以1900年1月1日(该年1月1日为周一)为基准,计算这一天与输入的日期的那一个月的第一天的距离totalDay,(例如:输入2015 6 6)则计算 1900 1.1 到 2015年 6.1;

用totalDay取余7 + 1,就能得到输入日期那一个月的第一天是周几,然后判断该月的天数输出就行了。

1 ,3 ,5 ,7 ,8 ,10, 12月有31天,2月闰年29天,平年28天;其余月份30天;

年份是4的倍数但不是100的倍数,或者年份是400的倍数,则该年为闰年;

import java.util.*;
public class calendar{
public static void main(String[] args){
System.out.println("请输入日期");
Scanner in=new Scanner(System.in);
int year=in.nextInt();
int month=in.nextInt();
int days=in.nextInt();
int cnt=0;//计算年差,累计的日期(距离1900年1月1日)(1900年1月1日为周一)
for(int i=1900;i<year;i++)
{
if(i%4==0&&i%100!=0||i%400==0)
cnt+=366;
else
cnt+=365;
}
int cnt2=0;//计算月差累计的日期
for(int i=1;i<month;i++)
{
if(i==2)
{
if(year%4==0&&year%100!=0||year%400==0)
cnt2+=29;
else
cnt2+=28;
}
else if(i==4||i==6||i==9||i==11)
cnt2+=30;
else
cnt2+=31;
}
int totalDay=cnt+cnt2+1;//输入日期的月份的第一天与1900年1月1日的日期差
//System.out.println(totalDay);
int monweek=(totalDay%7); //判断输入日期的月份的第一天是星期几
//System.out.println(monweek);
System.out.println("日\t一\t二\t三\t四\t五\t六");
int limit;//该月有几天
if(month==2)
{
if(year%4==0&&year%100!=0||year%400==0)
limit=29;
else
limit=28;
}
else if(month==4||month==6||month==9||month==11)
limit=30;
else
limit=31;
int k=1;
for(int i=0;i<monweek;i++)
System.out.print("\t");
while(k!=limit+1)
{
System.out.print(k++ +"\t");
monweek++;
if(monweek%7==0)
System.out.println();
}
System.out.println();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: