java万年历(java简单日历代码)

packagecom.zll;

importjava.util.Scanner;

/**

*总结:遇到的bug把传入判断年份的日期都传成输入的year了,应该传入要计算的每一年,所以导致

*计算年份时的不正确所以总天数一直不对。

*/

publicclassCalendar{

publicstaticvoidmain(String[]args){

//1900.1~~1900.2总天数一年是365天

//1、3、5、7、8、10、12月每月31天

//4,6,9,11为30天

//2月闰年29天,不是闰年就是28天。

Scannersc=newScanner(System.in);

System.out.println(“请输入年份:”);

intyear=sc.nextInt();

System.out.println(“请输入月份:”);

intmonth=sc.nextInt();

longday=0;//每月有多少天

longsum=0;//总天数

for(inti=1900;i<=year;i++){//循环从1900年到你输入年的多少天,不包括输入月份的天数

if(i==year){//计算了你输入年的月份的天数

longt;//计算输入月份返回的天数

for(intz=1;z<month;z++){//从1990年1月开始,就是0天,month小于你月份

t=Calday(z,day,i);

sum+=t;

}

}else{//这个是计算年份的天数

//longd;

//for(intj=1;j<=12;j++){

//d=Calday(j,day,i);

//sum+=d;

//}

//优化一下

booleanflag=year(i);//调用判断闰年的函数year

if(flag){

sum+=366;//返回true为闰年

}else{

sum+=365;

}

}

}

switch(month){//判断你输入月份的天数,并打印出来

case1:case3:case5:case7:case8:case10:case12:

day=31;

break;

case4:case6:case9:case11:

day=30;

break;

case2:

booleanflag=year(year);

if(flag==true){

day=29;

}else{

day=28;

}

break;

}

printCal(day,sum);//调用打印方法

System.out.println(“\n\n总天数:”+sum);

}

?

/**

*打印输出这个月的日期

*@paramday这个月有多少天

*@paramsum总天数

*/

publicstaticvoidprintCal(longday,longsum){

System.out.println(“星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六”);

intk3=(int)((sum+1)%7);//星期几

for(inti=1;i<=day;i++){//动态显示i<=多少天

if(i==1){

for(intj=0;j<k3;j++){

System.out.print(“\t\t”);

}

}

System.out.print(i+”\t\t”);

if((sum+i)%7==6){

System.out.println();

}

?

}

?

}

?

/**

*计算闰年

*@paramyear

*@returnboolean类型的如果为true则为闰年

*/

publicstaticbooleanyear(intyear){

if((year%4==0&&year%100!=0)||(year%400==0)){

returntrue;

}

returnfalse;

}

?

/**

*计算每个月有多少天

*@paramj传入的月份

*@paramday这个月有多少天

*@paramyear传入你要计算的年

*@return

*/

publicstaticlongCalday(intj,longday,intyear){

switch(j){

case1:case3:case5:case7:case8:case10:case12:

day=31;

break;

case4:case6:case9:case11:

day=30;

break;

case2:

booleanflag=year(year);

if(flag==true){

day=29;

}else{

day=28;

}

break;

}

returnday;

?

}

},importjava.util.Scanner;

publicclassPrintCalendar{

publicstaticvoidmain(String[]args){

intyears=0;

intmonth=0;

intdays=0;

booleanisRun=false;

//從控制台輸入年,月

Scannerinput=newScanner(System.in);

System.out.print(“請輸入年份:”);

years=input.nextInt();

System.out.print(“請輸入月份:”);

month=input.nextInt();

System.out.println(“\n*********”+years+”年”+month+”月日曆表************”);

//判别是否是闰年

if((years%4==0&&years%100!=0)||(years%400==0)){

isRun=true;

}

inttotalDays=0;//累計天數

//計算距離1900年1月1日的天數

for(inti=1900;i<years;i++){

if((i%4==0&&i%100!=0)||(i%400==0)){

totalDays=totalDays+366;

}else{

totalDays=totalDays+365;

}

}

intbeforeDays=0;

//根據月份判斷天數

for(intj=1;j<=month;j++){

switch(j){

case1:

case3:

case5:

case7:

case8:

case10:

case12:

days=31;

break;

case4:

case6:

case9:

case11:

days=30;

break;

case2:

if(isRun){

days=29;

}else{

days=28;

}

default:

System.out.println(“输入月份不正确!!”);

}

if(j<month){

beforeDays=beforeDays+days;

}

}

totalDays=totalDays+beforeDays;//統計到目前總天數

intfirstDayOfMonth=0;

inttemp=1+totalDays%7;

if(temp==7){

firstDayOfMonth=0;//週日

}else{

firstDayOfMonth=temp;

}

/*输出日历*/

System.out.println(“周日\t星期一\t星期二\t星期三\t周四\t星期五\t星期六”);

for(intk=0;k<firstDayOfMonth;k++){

System.out.print(“\t”);

}

for(intm=1;m<=days;m++){

System.out.print(m+”\t”);

if((totalDays+m)%7==6){

System.out.print(“\n”);

}

}

}

}

© 版权声明
THE END
喜欢就支持一下吧
点赞76赞赏 分享
评论 抢沙发

请登录后发表评论