下面这段代码是个日历,我看了好久都弄不明白,日期是和星期是怎么对应的,有什么规律的吗?
package game;
import java.util.*;
public class Rili {
public static void main (String[]args){
@SuppressWarnings("resource")
Scanner in = new Scanner(System.in);
System.out.println("请输入年份 :");
int year = in.nextInt();
System.out.println("请输入月份 :");
int month = in.nextInt();
int sum = 0;
for (int i=1900;i<year;i++){
if(i%4==0 && i%100!=0 || i%400==0){ //算 瑞年和 平年
sum+=366; //瑞年一年366天
}else{
sum+=365; //平年一年365天
}
}
for (int i = 1;i<month;i++){
if(i==2){ // 二月份的
if (year%4==0 && year%100!=0 || year%400==0){
sum+=29;
}else{
sum+=28;
}
}else if
(i==4 || i==6 || i==9 || i==11){ //4,6,9,11 月份 每月 30天
sum+=30;
}else{
sum+=31; //剩下的都是31天
}
}
sum+=1;
int pi = 0;
for (int i = 1;i<=month;i++){
if(i==2){ // 二月份的
if (year%4==0 && year%100!=0 || year%400==0){
pi=29;
}else{
pi=28;
}
}else if
(i==4 || i==6 || i==9 || i==11){ //4,6,9,11 月份 每月 30天
pi=30;
}else{
pi=31; //剩下的都是31天
}
}
int wekeday = sum %7;
System.out.println("日\t 一\t 二\t 三\t 四\t 五\t 六\t"); //打印日历前面的 星期
for(int i =1;i<=wekeday;i++){
System.out.print("\t");
}for(int i=1;i<=pi;i++){
if (sum%7==6){
System.out.print(i+"\n");
}else{
System.out.print(i+"\t");
}
sum++;
}
}
}

package game;
import java.util.*;
public class Rili {
public static void main (String[]args){
@SuppressWarnings("resource")
Scanner in = new Scanner(System.in);
System.out.println("请输入年份 :");
int year = in.nextInt();
System.out.println("请输入月份 :");
int month = in.nextInt();
int sum = 0;
for (int i=1900;i<year;i++){
if(i%4==0 && i%100!=0 || i%400==0){ //算 瑞年和 平年
sum+=366; //瑞年一年366天
}else{
sum+=365; //平年一年365天
}
}
for (int i = 1;i<month;i++){
if(i==2){ // 二月份的
if (year%4==0 && year%100!=0 || year%400==0){
sum+=29;
}else{
sum+=28;
}
}else if
(i==4 || i==6 || i==9 || i==11){ //4,6,9,11 月份 每月 30天
sum+=30;
}else{
sum+=31; //剩下的都是31天
}
}
sum+=1;
int pi = 0;
for (int i = 1;i<=month;i++){
if(i==2){ // 二月份的
if (year%4==0 && year%100!=0 || year%400==0){
pi=29;
}else{
pi=28;
}
}else if
(i==4 || i==6 || i==9 || i==11){ //4,6,9,11 月份 每月 30天
pi=30;
}else{
pi=31; //剩下的都是31天
}
}
int wekeday = sum %7;
System.out.println("日\t 一\t 二\t 三\t 四\t 五\t 六\t"); //打印日历前面的 星期
for(int i =1;i<=wekeday;i++){
System.out.print("\t");
}for(int i=1;i<=pi;i++){
if (sum%7==6){
System.out.print(i+"\n");
}else{
System.out.print(i+"\t");
}
sum++;
}
}
}
