預覽效果:
思路:
借用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");
}
}
}
}
}