/**
*
*/
package package_02;
/**
* @author 周雪飞_15K
* @date 2015年9月9日
*/
public class FindWeek {
public int findWeek_Day1(int year, int month) {// 查询所在年之前有多少天
int week_day;
int sumday = 0;
for (int i = 1; i < year; i++) {// year年之前瑞年有几年
if ((i % 100 != 0 && i % 4 == 0) || (i % 400 == 0))
sumday += 1;
}
sumday = (year - sumday - 1) * 365 + sumday * 366;// year年之前有多少天
for (int i = 1; i < month; i++) {
if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12)
sumday += 31;
if (i == 4 || i == 6 || i == 9 || i == 11)
sumday += 30;
if (i == 2) {
if ((year % 100 != 0 && year % 4 == 0) || (year % 400 == 0)) // year年是不是瑞年,是则二月加一天
sumday += 29;
else
sumday += 28;
}
}
week_day = sumday % 7;
week_day = week_day + 1;
return week_day;
}
public int findWeek_Day(int year, int month) {// 查询所在年之前有多少天
int week_day;
int sumday = 0;
for (int i = 1; i < year; i++) {// year年之前瑞年有几年
if ((i % 100 != 0 && i % 4 == 0) || (i % 400 == 0))
sumday += 1;
}
sumday = (year - sumday - 1) * 365 + sumday * 366;// year年之前有多少天
for (int i = 1; i < month; i++) {
if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12)
sumday += 31;
if (i == 4 || i == 6 || i == 9 || i == 11)
sumday += 30;
if (i == 2) {
if ((year % 100 != 0 && year % 4 == 0) || (year % 400 == 0)) // year年是不是瑞年,是则二月加一天
sumday += 29;
else
sumday += 28;
}
}
week_day = sumday % 7;
week_day = week_day + 1;
if (week_day == 7)
week_day = 0;
return week_day;
}
public int findMonth_Day(int year, int month) {
int month_day = 15;
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
month_day = 31;
if (month == 4 || month == 6 || month == 9 || month == 11)
month_day = 30;
if (month == 2) {
if ((year % 100 != 0 && year % 4 == 0) || (year % 400 == 0)) // year年是不是瑞年
month_day = 29;
else
month_day = 28;
}
return month_day;
}
}
/**
*
*/
package package_02;
/**
* @author 周雪飞_15K
* @date 2015年9月9日
*/
public class PrintCalendar {
public void print1(int month_day, int week_day) { // 打印月份
int day;
System.out.println("一" + "\t" + "二" + "\t" + "三" + "\t" + "四" + "\t" + "五" + "\t" + "六" + "\t" + "日");
day = 1;
for (int j = 1; j < week_day + month_day; j++) {
if (day == 1 && j < week_day) {
for (int h = 1; h < week_day; h++)
System.out.print("\t");
j = week_day;
}
if (j % 7 == 0) {
System.out.print(day);
System.out.println();
day++;
continue;
}
System.out.print(day + "\t");
day++;
}
System.out.println();
}
public void print(int month_day, int week_day) { // 打印月份
int day;
System.out.println("日" + "\t" + "一" + "\t" + "二" + "\t" + "三" + "\t" + "四" + "\t" + "五" + "\t" + "六");
day = 1;
for (int j = 0; j < week_day + month_day; j++) {
if (day == 1 && j < week_day) {
for (int h = 0; h < week_day; h++)
System.out.print("\t");
j = week_day;
}
if ((j + 1) % 7 == 0) {
System.out.print(day);
System.out.println();
day++;
continue;
}
System.out.print(day + "\t");
day++;
}
System.out.println();
}
}
/**
*
*/
package package_02;
import java.util.Scanner;
/**
* @author 周雪飞_15K
* @date 2015年9月8日
*/
public class TextCalendar {
public static void main(String[] args) {
FindWeek findWeek = new FindWeek();
PrintCalendar printCalendar = new PrintCalendar();
while (true) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年份:");
int year = scanner.nextInt();
System.out.println("请输入月份:");
int month = scanner.nextInt();
int week_day = findWeek.findWeek_Day(year, month);
int month_day = findWeek.findMonth_Day(year, month);
System.out.println("第一种");
printCalendar.print(month_day, week_day);
int week_day1 = findWeek.findWeek_Day1(year, month);
int month_day1 = findWeek.findMonth_Day(year, month);
System.out.println("第二种");
printCalendar.print1(month_day1, week_day1);
}
}
}