小案列---万年历

import java.util.Scanner;

class ShowCalendar{
public static void main(String[] args){
System.out.println("**************欢迎使用万年历*****************");
Scanner sc=new Scanner(System.in);
System.out.print("请输入年份为:");
int year=sc.nextInt();
System.out.print("请输入月份为:");
int month=sc.nextInt();

System.out.println();

int days=0;     //存储所求月份天数
boolean isRu=false;//记录当前是否为闰年

//判断当前年份
if(month>=2){
if((year%4==0 && year%100!=0) || year%400==0){
isRu=true;//是闰年
}else{
isRu=false;//是平年
}
}

int totalDays=0;//存放当前年份之前的总天数
//从1990年看是循环,到year年
for(int i=1900;i<year;i++){
if((i%4==0 && i%100!=0)|| i%400==0){
totalDays+=366;
}else{
totalDays+=365;
}
}

//计算输入月份之前的天数
for(int i=1;i<=month;i++){
switch(i){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:days=31;break;
case 2:
if(isRu){
days=29;
}else{
days=28;
}
break;
default:days=30;break;
}
if(i<month){
totalDays+=days;
}
}

//计算所求月份的第一天是星期几?
int firstDayOfMonth;

int temp=totalDays%7+1;
if(temp==7){
firstDayOfMonth=0;
}else{
firstDayOfMonth=temp;
}


//显示日历
System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
for(int i=0;i<firstDayOfMonth;i++){
System.out.print("\t");//输出空格的数量
}
for(int i=1;i<=days;i++){
System.out.print(i+"\t");//每七天要换行
if((totalDays+i)%7==6){
System.out.println();
}
}
System.out.println();
}
}

猜你喜欢

转载自1792503958.iteye.com/blog/2206333