以上就是万年历程序了。
/*
* 完成时间:2016年10月6日 22:50:31
* 思想来源:java语言程序设计.基础版
* 作者:南极看见你
* 版权所有:南极看见你
* 维护的时间:
*/
package human.calendar.console;
public class Calendar {
// 解决闰年的问题
static boolean is_Leap_Year(int year) {
return (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0));
}
// 这个月是几天?
static int days_in_month(int year, int month) {
// 这些月份是31天
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
return 31;
} else if (month == 2) {
if (is_Leap_Year(year)) {
return 29;
} else
return 28;
} else
return 30;
}
// 某月1号是一年中的第几天?
static int days_in_years(int year, int month) {
int days = 1;
if (month == 1) {
return days;
} else {
for (int i = 2; i <= month; i++) {
days += days_in_month(year, i - 1);
}
return days;
}
}
// 从2016年8月1号开始,已经这是第几天了?
static int days_from_2016_8_1(int year, int month) {
int days = 153;
for (int years = 2017; years <= year - 1; years++) {
days += 365;
// 别忘了他要是闰年还要加上个一天!
if (is_Leap_Year(years)) {
++days;
}
}
days += days_in_years(year, month);
return days;
}
// 印出日历的头
static void printCalendarHead(int year, int month) {
System.out.println(year + "年" + month + "月");
System.out.println("----------------------------------------------------------");
System.out.println("\t" + "日" + "\t" + "一" + "\t" + "二" + "\t" + "三" + "\t" + "四" + "\t" + "五" + "\t" + "六");
}
// 判断星期几
static int isWeekday(int days) {
return days % 7;
}
// 打印万年历主体了!
static void printCalendarBody(int year, int month,int blank_Day) {
int days=days_in_month(year, month);
for (int i = 1; i <= blank_Day; i++) {
System.out.print("\t" + "空");
}
for (int i = 1; i <= days; i++) {
System.out.print("\t" + i);
if ((i + blank_Day) % 7 == 0)
System.out.println();
}
}
//主角登场了,万年历输出方法!
static void printCalendar(int year,int month){
int days=days_from_2016_8_1(year, month);
int blank_Day=isWeekday(days);
printCalendarHead(year, month);
printCalendarBody(year, month, blank_Day);
}
}