package kgc;
import java.util.Scanner;
public class Array {
public static void main(String[] args) {
// TODO Auto-generated method stub
//打印一年的日历
System.out.println("请输入年份");
Scanner input = new Scanner(System.in);
int year = input.nextInt();
for (int i = 1; i <= 12; i++) {
System.out.println(i + "月");
printFullYear(year, i);
System.out.println("");
System.out.println("****************************************************");
}
input.close();
}
//用数组存数据形成日历
public static void printCalendar(int monday, int monthDay) {
int[] calendar = new int[7];
int endNum = 0;
System.out.print("一\t");
System.out.print("二\t");
System.out.print("三\t");
System.out.print("四\t");
System.out.print("五\t");
System.out.print("六\t");
System.out.print("日\t");
//打印六行日历的情况
if ((monday == 6 && monthDay == 31) || (monday == 7 && (monthDay == 30 || monthDay == 31))) {
for (int i = 0; i < 6; i++) {
if (i == 0) {
System.out.println("");
for (int m = 0; m < monday - 1; m++) {
System.out.print("\t");
}
for (int j = monday - 1; j < 7; j++) {
calendar[j] = j + 2 - monday;
System.out.print(calendar[j] + "\t");
}
endNum = calendar[6];
} else if (i == 5) {
System.out.println("");
int s = 0;
for (int j = endNum + 7*(i-1)+1; j < monthDay + 1; j++) {
calendar[s] = j;
System.out.print(calendar[s] + "\t");
s++;
}
} else {
int rowPrint = i * 7 + endNum;
int a = 6;
System.out.println("");
for (int j = 0; j < 7; j++) {
calendar[j] = rowPrint - a;
a--;
System.out.print(calendar[j] + "\t");
}
}
}
}
//打印四行情况
else if(monday==1&&monthDay==28) {
for(int i=0;i<4;i++) {
System.out.println("");
for(int j=0;j<7;j++) {
calendar[j]=i*7+j+1;
System.out.print(calendar[j] + "\t");
}
}
}
//正常打印五行
else {
for (int i = 0; i < 5; i++) {
if (i == 0) {
System.out.println("");
for (int m = 0; m < monday - 1; m++) {
System.out.print("\t");
}
for (int j = monday - 1; j < 7; j++) {
calendar[j] = j + 2 - monday;
System.out.print(calendar[j] + "\t");
}
endNum = calendar[6];
} else if (i == 4) {
System.out.println("");
int s = 0;
for (int j = endNum + 7*(i-1)+1; j < monthDay + 1; j++) {
calendar[s] = j;
System.out.print(calendar[s] + "\t");
s++;
}
} else {
int rowPrint = i * 7 + endNum;
int a = 6;
System.out.println("");
for (int j = 0; j < 7; j++) {
calendar[j] = rowPrint - a;
a--;
System.out.print(calendar[j] + "\t");
}
}
}
}
}
//输出一年的日历
public static void printFullYear(int year, int month) {
int totalDay = 0;
int monday = 0;
int monthDay = 0;
for (int i = 1990; i < year; i++) {
if (i % 4 == 0 && i % 4 != 100 || i % 400 == 0) {
totalDay += 366;
} else {
totalDay += 365;
}
}
for(int j=1;j<month;j++) {
switch (j) {
case 2:
if (year % 4 == 0 && year % 4 != 100 || year % 400 == 0) {
totalDay += 29;
break;
} else {
totalDay += 28;
break;
}
case 4:
case 6:
case 9:
case 11:
totalDay += 30;
break;
default:
totalDay += 31;
break;
}
}
monday = totalDay % 7 + 1;
switch (month) {
case 2:
if (year % 4 == 0 && year % 4 != 100 || year % 400 == 0) {
monthDay = 29;
break;
} else {
monthDay = 28;
break;
}
case 4:
case 6:
case 9:
case 11:
monthDay = 30;
break;
default:
monthDay = 31;
break;
}
printCalendar(monday, monthDay);
}
}
Java一维数组打印日历
最新推荐文章于 2022-12-16 11:03:17 发布