java吧 关注:1,276,074贴子:12,791,663
  • 10回复贴,共1

本萌新是个初学者,有个问题不懂,求大神解答,感激不尽

只看楼主收藏回复

下面这段代码是个日历,我看了好久都弄不明白,日期是和星期是怎么对应的,有什么规律的吗?
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++;
}
}
}


IP属地:广东来自Android客户端1楼2018-04-21 19:50回复


    IP属地:广东来自Android客户端2楼2018-04-21 19:54
    回复
      2025-08-30 02:55:58
      广告
      不感兴趣
      开通SVIP免广告
      有没有人?


      IP属地:广东来自Android客户端3楼2018-04-21 21:24
      回复
        卫星justonejoke


        来自iPhone客户端4楼2018-04-21 22:01
        收起回复
          星期不是1~7循环吗?


          来自iPhone客户端5楼2018-04-21 22:16
          回复(4)
            已知当前日期是星期几的情况下,求目标日期与当前日期所差的天数,除7取余,就能算目标日期星期几了啊。


            IP属地:广西来自Android客户端6楼2018-04-22 13:56
            回复