package x;
import java.util.*;
public class calendar {
//用户输入的年份
public static int year = Integer.MIN_VALUE;
//用户输入的月份
public static int month = Integer.MIN_VALUE;
// 对应每个月份的天数
public static int[] dayOfMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
public static void main(String[] args) {
PrintCalendar();
}
public static void PrintCalendar() {
//1.输入年份月份
InputYearAndMonth();
//2.计算1900-1-1到用户输入年份的总天数(year=2017,month=7 2017-7-1)
// 2-1.计算各年总天数
getSumDayOfYears();
int sum = getSumDayOfYears();
// 2-2.计算各月天数和
getSumDayOfMonth();
sum += getSumDayOfMonth();
sum++;
//3.打印年份和月份
//4.打印月份和标题(星期一到星期日)
PrintMonthTitle();
//5.根据某月1日是星期几,打印日历内容
PrintCalendarContent(sum % 7);
}
public static void InputYearAndMonth() {
Scanner input = new Scanner(System.in);
System.out.print("请输入年份:");
year = input.nextInt();
System.out.print("请输入月份:");
month = input.nextInt();
input.close();
input = null;
}
public static boolean isLeapYear(int year) {
return year % 400 ==0 || year % 4 == 0 && year % 100 != 0;
}
public static int getSumDayOfYears() {
int sum = 0;
for(int i = 1900; i < year; i++) {
sum += 365;
if(isLeapYear(i)) {
sum++;
}
}
return sum;
}
public static int getSumDayOfMonth() {
int sum = 0;
for(int i = 1; i < month; i++) {
sum += dayOfMonth[i];
if(isLeapYear(i) && month > 2) {
sum++;
}
}
return sum;
}
public static void PrintMonthTitle() {
String[] monthName = {"一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二"};
String[] weekdays = {"星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"};
System.out.println("\t\t" + year + "\t" + monthName[month - 1]);
for(int i = 0; i < weekdays.length; i++) {
System.out.print(weekdays[i] + "\t");
}
System.out.println();
}
public static void PrintCalendarContent(int dayOfWeek) {
int sepCount = dayOfWeek - 1; //\t的数量
if(dayOfWeek == 0) {
sepCount = 6;
}
for(int i = 0; i < sepCount; i++) {
System.out.print("\t");
}
for(int i = 0; i < dayOfMonth[month - 1]; i++) {
System.out.print(i + 1);
if((dayOfWeek + i) % 7 == 0) {
//周日
System.out.println();
}
else {
System.out.print("\t");
}
}
}
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交