日期:2014-05-20 浏览次数:20713 次
import java.util.Scanner; class WNL2 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int a=4,c=1970,d,x=0,b,m,q; System.out.print("请输入大于1969年的年份:"); do{ b=sc.nextInt(); if (b<1970){ System.out.print("无效,请重新输大于1969的年份:"); } }while(b<1970); System.out.print("请输入月:"); do{ m=sc.nextInt(); if (m<1||m>12){ System.out.print("无效,请重新输1~12之间的月份:"); } }while(m<1||m>12); System.out.print("请输入日:"); do{ q=sc.nextInt(); if (q<1||q>31){ System.out.print("无效,请重新输1~31之间的日期:"); } }while(q<1||q>31); if (m==2&&q>28&&!((b%4==0&&b/100!=0)||b/400==0)){ System.out.print("无效,请重新输1~28之间的日期:"); q=sc.nextInt(); } if (m==2&&q>29&&((b%4==0&&b/100!=0)||b/400==0)){ System.out.print("无效,请重新输1~29之间的日期:"); q=sc.nextInt(); } System.out.println("--------------------------------------"); //以1970年1月1日星期4为参照; d=b-c; for (int i=0;i<d ;i++ ){ c++; if ((c%4==0&&c/100!=0)||c/400==0){ x++; //x计数器为闰年增加的天数; continue; } } int z=(d+x)%7; //z为增加天数取模(一个星期为7天); if ((c%4==0&&c/100!=0)||c/400==0){ z=(d+x-1)%7; //如果该年是闰年则要减去多加的一天; } int y=a+z; //y为4加上d年后多余的天数; if (a+z>7){ y=a+z-7; //如果大于7则是下一个星期; } int s=0; //用一个数组定义12个月的天数; int [] array=new int[]{31,28,31,30,31,30,31,31,30,31,30,31}; for (int j=0;j<m-1 ;j++ ){ if ((c%4==0&&c/100!=0)||c/400==0){ array[1]=29; //闰年则二月29天; } s+=array[j]; } int w=(s+q)%7+y; if (w>7){ w=w-7; //当w-7的值为1时,则为星期天; } switch(w){ case 2:System.out.println("您查询的日期是:星期一");break; case 3:System.out.println("您查询的日期是:星期二");break; case 4:System.out.println("您查询的日期是:星期三");break; case 5:System.out.println("您查询的日期是:星期四");break; case 6:System.out.println("您查询的日期是:星期五");break; case 7:System.out.println("您查询的日期是:星期六");break; case 8:System.out.println("您查询的日期是:星期天");break; default :System.out.println("您查询的日期是:星期天"); } System.out.println("--------------------------------------"); //================================================以上为查询某日星期几的代码; System.out.println((m)+"月的所有日期为:"); int l=s%7+y; if (l>7){ l=l-7; } //l代表每个月1号星期几; //System.out.println(l); System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六"); for (int e=0;e<1 ;e++ ){ int o=0; for (int h=0;h<l ;h++ ){ //需输入空格的次数; if (l==7) //当此月的第一天为星期一时,跳出; { break; } o++; System.out.print("\t"); } for (int p=1;p<=array[m-1] ;p++ ){ //从第几个开始输入日期(m-1)的意思为:在数组中存储的m月的天数下标是m-1; System.out.print(p+"\t"); if (o+p==7||(o+p)%7==0){ //输到星期六则换行; System.out.println(); } } } } }