Java中编写一个用于求固定区间满足条件的日期的总数

1.要注意的是平年和闰年的判别条件:

        (1)平年:365天,2月28天。

        (2)闰年:366天,2月29天。

        判别条件:根据年份的特殊性分为世纪闰年(2000年)和普通闰年(如1964年)

        如果是世纪闰年的话只需要满足条件(年份%400==0),如果是普通闰年的话则要满足条件

        (年份%4==0 && 年份%100!=0),所以如果想要准确的判断一个区间内哪些是闰年,需要

        写完整条件((年份%400==0)|| ((年份%4==0 && 年份%100)!=0))

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int i=1900,j=1,k=1,sum=0,wh;
        for(i=1900;i<=9999;i++)
        {
          j=1;
          wh=(i%10+(i/10)%10+(i/100)%10+i/1000);
          if(i%400==0 || (i%4==0 && (i%100)!=0))//366
          {
            for(j=1;j<=12;j++)
            {
              k=1;
              if(j==1 || j==3 || j==5 ||j==7|| j==8 || j==10 || j==12)
              {
                for(k=1;k<=31;k++)
                {
                  if(wh==(j%10+j/10+k%10+k/10))
                    sum++;
                }
              }
              else if(j==2)
              {
                for(k=1;k<=29;k++)
                {
                  if(wh==(j%10+j/10+k%10+k/10))
                    sum++;
                }
              }
              else
              {
                  for(k=1;k<=30;k++)
                {
                  if(wh==(j%10+j/10+k%10+k/10))
                    sum++;
                }
              }
            }
          }
          else
          {
            for(j=1;j<=12;j++)
            {
              k=1;
              if(j==1 || j==3 || j==5 || j==7 || j==8 || j==10 || j==12)
              {
                for(k=1;k<=31;k++)
                {
                  if(wh==(j%10+j/10+k%10+k/10))
                    sum++;
                }
              }
              else if(j==2)
              {
                  for(k=1;k<=28;k++)
                {
                  if(wh==(j%10+j/10+k%10+k/10))
                    sum++;
                }
              }
              else
              {
                  for(k=1;k<=30;k++)
                {
                  if(wh==(j%10+j/10+k%10+k/10))
                    sum++;
                }
              }
            }
          }
        }
        System.out.println(sum);
        scan.close();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值