用java列印日曆
題目:編寫一個某年第一天是星期幾的查詢器:程式輸出:XXXX年一月一日是 星期X
提示:1900年一月一日是星期一
思路解析:
1,先算出今年距離1900年之間共有多少天,在計算總天數的時候,分兩種情況考慮,第一種是對年的考慮,分閏年和平年,第二種是對月份的判斷,也要注意分閏月和非閏月哦!!
2,在算出了距離1900年的總天數後,根據(totalDays+1)%7這個公式算星期。
3,有兩個小細節需要注意的是:@以星期幾為次數來迴圈列印空格,如下面這張圖:
Week=1;即通過for(int i=0;i<week;i++){}來判斷空格,如圖中星期日到星期一的空格!
@月天數的換行,每七天換一行。如下圖:
程式碼實現:
packagecom.rshz.lesson4;
importjava.util.Scanner;
publicclass Calendar {
/**
* 編寫一個某年第一天是星期幾的查詢器:
* 程式輸出:XXXX年一月一日是星期X
提示:1900年一月一日是星期一
* @param args
*/
publicstaticvoid main(String[] args) {
// TODO Auto-generated method stub
Scanner in = newScanner(System.in);//呼叫Scanner
//輸入年和月
System.out.println("請輸入年和月");
intyear=in.nextInt();
intmonth=in.nextInt();
//定義總天數和月以及星期
longtotalDays=0;
longweek=0;
longmonthDay=0;
//對年的處理
for(inti=1900;i<year&&i>=1900;i++)
{
if(i%4==0&&i%100!=0||i%400==0)
{
totalDays=totalDays+366;//閏年
}
else
{
totalDays=totalDays+365;
}
}
//對月的處理
for(inti=1;i<month;i++)
{
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
{
totalDays=totalDays+31;
}
elseif(i==4||i==6||i==9||i==11)
{
totalDays=totalDays+30;
}
else
{
if(year%4==0&&year%100!=0||year%400==0)
{
totalDays=totalDays+29;//閏月
}
else
{
totalDays=totalDays+28;//平月
}
}
}
System.out.println("總天數:"+totalDays);
week=(totalDays+1)%7;//根據總天數算星期幾
System.out.println("當月第一天是星期:"+week);
System.out.println("年份"+year+"月份"+month);
System.out.println("*********************************************************************");
System.out.println("日"+"\t"+"一"+"\t"+"二"+"\t"+"三"+"\t"+"四"+"\t"+"五"+"\t"+"六");
//列印星期的空格
for(inti=0;i<week;i++)//根據星期來列印空格
{
System.out.print("\t");
}
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
monthDay=31;
}
elseif(month==4||month==6||month==9||month==11)
{
monthDay=30;
}
else
{
if(year%4==0&&year%100!=0||year%400==0)
{
monthDay=29;
}
else
{
monthDay=28;
}
}
for(inti=1;i<=monthDay;i++)//遍歷月的天數
{
System.out.print(i+"\t");
if((i+week)%7==0)//判斷星期
{
System.out.println();
}
}
System.out.println();
System.out.println("*************************************************");
}
}