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”);
}
}
}
}
Tips:本站所有资源均收集自互联网,分享目的仅供学习参考,资源版权归该资源的合法拥有者所有。
Tips:若本站所发布的资源侵犯到您的合法权益,请及时联系 hqteam@qq.com 删除!
暂无评论内容