输出1900年以后任意年一个月的月历
1.概述
已知1900年1月1日是星期一,要求打印出1900年后任意一天的日历

2.解决思路
(1)日历难点在于计算特定某一年星期数与天数的关系,只要获取该月的第一天是星期几,加上格式就可以输出当月日历,先解决简单问题已知这个月的1号是这个星期的第day天,输出当月日历:
int day=input.nextInt();for(int mo=0;mo<=11;mo++){System.out.println("\n Sun Mon Tue Wed Thu Fri Sat");for (int j=1;j<=8;j++){if (j>=8){j=j%7;System.out.printf("\n");}if(i>=day&&i!=31+day){System.out.printf("%3d ",i-day+1);i++;}if(i
(2)现在日历雏形已经有了,只要计算出这个月的第一天是这个星期的第几天(day)就完成了。先定某年1月1日,1900年1月1日day=2,1901年1月1日day=2+365%7,之后的每年第一天day=day+runnian(year)%7。定义一个runnian(int year)方法,闰年返回值366,平年返回值365(写程序的时候忘了直接用的if判断的)。接下来精确到月把每个月天数存入数组int [] ui={31,28,31,30,31,30,31,31,30,31,30,31};day=(day+ui[year])%7,大功告成!!!
3.演示
package javaapplication35;
import java.util.Scanner;
public class 输出1900年以后任意年一个月的月历 {public static void main(String[] args) {String [] m= {"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};String [] d= {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};int [] ui={31,28,31,30,31,30,31,31,30,31,30,31};int i=1;Scanner input = new Scanner(System.in);System.out.printf("输入年份:");int year1=input.nextInt();System.out.printf("输入月份:");int mo=input.nextInt();mo--;if(year1%4==0){ui[1]=29;}int day=2,year2=1900;if(year1>1900){for(year2=1900;year2=8){j=j%7;System.out.printf("\n");}if(i>=day&&i!=ui[mo]+day){System.out.printf("%3d ",i-day+1);i++;}if(i
4. 运行结果


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
