预览效果:
思路:
借用2001年1月1日星期一作为基准,计算出要求月份第一天到这一基准的天数,求出该月第一天星期几,打印出即可。因为闰年每100年的判断的关系,计算比较麻烦,所以省点麻烦只打印2001~2099年之内的月份
代码如下:
package num;
import java.util.Scanner;
public class num{
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
int year,month;
System.out.println("输入年份(2001~2099):");//2001.1.1星期一
year=scan.nextInt();
System.out.println("输入月(1~12):");//2001.1.1星期一
month=scan.nextInt();
int tem=year-2001;
int a=tem/4;//4年一个周期
int b=tem%4;//余几年
int num=a*1461+b*365;//计算天数
if(b!=3)//是否是闰年
{
if(month==1)
{
num+=0;
}
if(month==2)
{
num+=31;
}
if(month==3)
{
num+=59;
}
if(month==4)
{
num+=90;
}
if(month==5)
{
num+=120;
}
if(month==6)
{
num+=151;
}
if(month==7)
{
num+=181;
}
if(month==8)
{
num+=212;
}
if(month==9)
{
num+=243;
}
if(month==10)
{
num+=273;
}
if(month==11)
{
num+=304;
}
if(month==12)
{
num+=334;
}
}
if(b==3)//是闰年 从2月份后 每月比平年num++
{
if(month==1)
{
num+=0;
}
if(month==2)
{
num+=31;
}
if(month==3)
{
num+=59;
num++;
}
if(month==4)
{
num+=90;
num++;
}
if(month==5)
{
num+=120;
num++;
}
if(month==6)
{
num+=151;
num++;
}
if(month==7)
{
num+=181;
num++;
}
if(month==8)
{
num+=212;
num++;
}
if(month==9)
{
num+=243;
num++;
}
if(month==10)
{
num+=273;
num++;
}
if(month==11)
{
num+=304;
num++;
}
if(month==12)
{
num+=334;
num++;
}
}
int week=num%7+1;
System.out.println("日 一 二 三 四 五 六");
if(week!=7)
{
for(int i=1;i<=week;i++)
{
System.out.print(" ");
System.out.print(" ");
}
}
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
for(int i=1;i<=31;i++)
{
if(i<10)
{
System.out.print(i);
System.out.print(" ");
}
else
{
System.out.print(i);
System.out.print(" ");
}
int v=i+week;
if(v%7==0)
{
System.out.print("\n");
}
}
}
if(month==4||month==6||month==9||month==11)
{
for(int i=1;i<=30;i++)
{
if(i<10)
{
System.out.print(i);
System.out.print(" ");
}
else
{
System.out.print(i);
System.out.print(" ");
}
int v=i+week;
if(v%7==0)
{
System.out.print("\n");
}
}
}
if(month==2)
{
int vv=28;
if(b==3) vv=29;
for(int i=1;i<=vv;i++)
{
if(i<10)
{
System.out.print(i);
System.out.print(" ");
}
else
{
System.out.print(i);
System.out.print(" ");
}
int v=i+week;
if(v%7==0)
{
System.out.print("\n");
}
}
}
}
}