import java.util.*;
public class Test_029 {
public static void main(String[] args) {
int days = 0; // 计算1900-1-1到用户输入的的日期的 总天数; 1900-1-1到用户输入的天数,七取模,则正好是星期几
Boolean rn = true;
int day=0;
Scanner s = new Scanner(System.in);
System.out.println("请输入你要查询的年份");
int year = s.nextInt();
System.out.println("请输入你要查询的月份");
int month = s.nextInt();
for (int a = 1900; a < year; a++) { //求1900-1-1到用戶輸入年份-1的总天数;
if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0) {
days += 366;
} else {
days += 365;
}
}
//判断用户输入的年份是否为闰年;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
rn=true;
} else {
rn=false;
}
//将1900-1-1到用户输入的年份-1的天数 + 用户输入的那一年的月份-1 的总天数计算起来 得到公式 =1990-1-1 到总天数 +1 %7 = 当月日期对应的星期
for (int a = 1; a < month; a++) {
if (rn == true && a == 2) {
days += 29;
} else if (rn != true && a == 2) {
days += 28;
} else if (a == 1 || a == 3 || a == 5 || a == 7 || a == 8 || a == 10 || a == 12) {
days += 31;
} else {
days += 30;
}
}
//判断用户输入的月的总天数是多少
if(rn==true && month==2) {
day=29;
}else if (month==2 && rn==false) {
day=28;
}else if(month==1 || month ==3|| month ==5 || month==7 ||month==8||month==10 ||month==12) {
day=31;
}else {
day=30;
}
//求出那一个月的第一天所对应的日期是多少;
int weekday = (days + 1) % 7; // 求出用户输入的年份以及月份,查询出当月的日期所对应的星期
System.out.println("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期天");
//weekday 对应的当月一号的星期,
for (int a = 1; a <weekday; a++) {
System.out.print("\t");
}
//打印那一个月的每一天,并且所对应到周末则换行输出,如果没有对应周日,则继续输出.
for(int a=1;a<=day;a++) {
if(a>9) { //输出好看点,将小于十的数字添加一个空格;
if(((weekday)%7)==7 || weekday%7==0) {
System.out.print(" "+a+"\n");}
else {
System.out.print(" "+a+"\t");
}
weekday++;
}
else {
if(((weekday)%7)==7 || weekday%7==0) {
System.out.print(" "+a+"\n");}
else {
System.out.print(" "+a+"\t");
}
weekday++;
}
}
}
}
根据用户输入的年月显示当月的日历源码【走进JAVA-2.9】
最新推荐文章于 2019-10-02 14:03:29 发布