package test;
import java.util.*;
/**
* 输入年月,返回当月的日历
* @author asus
*
*/
public class MonthTest {
public static void main(String[] args) {
Scanner in = new Scanner(System. in);
System. out.println( "请输入年份" );
int year = in.nextInt();
System. out.println( "请输入月份" );
int month = in.nextInt();
long sum = 0; //sum可能会是个大数这里用long型保存比较好
int u = 0; //用来保存当月的天数
boolean leapYear = false; //标志位,是否闰年的标志
//计算从1900年到输入的年份(不含当年)之间的天数
for ( int i = 1900; i < year; i++) {
//区分当年是否是闰年
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
sum += 366;
leapYear = true;
} else {
sum += 365;
leapYear = false;
}
}
//计算从1月份到输入的月份(不含当月)之间的天数
for ( int I = 1; I < month; I++) {
if (I == 2) {
if (leapYear) {
sum += 29;
} else {
sum += 28;
}
} else if (I == 4 || I == 6 || I == 9 || I == 11) {
sum += 30;
} else {
sum += 31;
}
}
/*
* sum+=7; System.out.println("1900年1月1日到2016年5月7日一共:"+sum+"天");
* System.out.println("2016年5月7日为星期"+sum%7);
*/
//计算输入的年月的上一个月的最后一天是周几
long wekday = sum % 7;
System. out.println( "日\t一\t二\t三\t四\t五\t六" );
//使用/t占位,找到输入的月份的第一天的位置
for ( int i = 0; i <= wekday; i++) {
System. out.print( "[]\t");
}
//获取输入月份的天数
if (month == 2) {
if (leapYear) {
u = 29;
} else {
u = 28;
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
u = 30;
} else {
u = 31;
}
//将当月的日期与星期对应
for ( int i = 1; i <= u; i++) {
sum++;
if (sum % 7 == 6) {
System. out.print(i + "\n");
} else {
System. out.print(i + "\t");
}
}
}
}
日常练习,根据输入的年月获取当月的日历
最新推荐文章于 2022-07-04 14:28:49 发布