用Java编写一个简单日历(不含图形界面)

来源:互联网 发布:西交大网络导航 编辑:程序博客网 时间:2024/05/29 21:29


//该程序以元年一月一日为原点,
//获得年份月份后,先以月为单位,计算此年该月之前的总天数,
//然后以年为单位,计算从元年一月一日到此年的总天数;
//相加即为从元年一月一日到该月份的总天数,
//再将其除以7即可得出该月首日为星期几(元年一月一日为星期一,故可以直接除以7,但要注意输出时日期格式);
//再逐个推移即可得出该月日历。
import java.util.Scanner;


public class Calculate{


public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("please write year:");
int year = scan.nextInt();
System.out.println("please write mouth:");
int mouth = scan.nextInt();
System.out.println("The calulate is:");
System.out.println("日\t一\t二\t三\t四\t五\t六");
scan.close();
        
//初始化几个变量;
int num = 0;
int sumDay=0;
int temp=year-1;//除去本年
int iniMouth = mouth;//将mouth初始值付给i,以备后续使用
mouth--;//除去本月

//判断每个月的天数并计算
while(mouth>0){
if(mouth==1||mouth==3||mouth==5||mouth==7||mouth==8||mouth==10||mouth==12){
num = 31;
}
if(mouth==4||mouth==6||mouth==9||mouth==11){
num = 30;
} if(mouth==2){
//判断是否为闰年
if(((year%4 == 0 && year%100 != 0) || year%400 == 0)){
num=29;  
}else{
num=28;
}
}
sumDay = sumDay+num;
mouth--;
}

int sum = temp*365+temp/4+temp/400-temp/100+sumDay;
int dayOfWeek = sum%7;

//使日期格式规整
while(dayOfWeek>0){
dayOfWeek--;
System.out.print("\t ");
}
       
mouth = iniMouth;//将初始mouth值再赋给它
int  day = 0;
if(mouth==1||mouth==3||mouth==5||mouth==7||mouth==8||mouth==10||mouth==12){
day = 31;
}
if(mouth==4||mouth==6||mouth==9||mouth==11){
day = 30;
} if(mouth==2){ 
if(((year%4 == 0) && ( year%100 != 0)) || (year%400 == 0)){
day=29;
}else{
day=28;
}

//因元年一月一日为星期一,故应将整体日期后移一格,使日期与星期几对齐
System.out.print(" \t");
//输出该月日期
for(int j=1;j<=day;j++){
System.out.print(j+"\t");
if((sum+j+1)%7==0){
System.out.println();
}
}
}
}
0 0
原创粉丝点击