Java,计算用户输入的日期离1900年1月1日相距多少天。(注意闰年,每个月份天数不一样)

计算用户输入的日期离1900年1月1日相距多少天。(注意闰年,每个月份天数不一样)
分析:
1,年:
1.1,按平年算,每年365天
1.2,每个闰年加1天,若输入的那年是闰年,3月前,要减1天,反之不用
3,月:
安装平年每个月的天数:31,28,31,30,31,30,31,31,30,31,30,31
4,日:
天数直接相加

import java.util.Scanner;

public class Text1 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.println("输入年份:");
        int year = sc.nextInt();
        System.out.println("输入月份:");
        int month = sc.nextInt();
        System.out.println("输入日期:");
        int days = sc.nextInt();

        /*1,年:(闰年能将4整除,不能将100整除)
                1.1,按平年算,每年365天
                1.2,每个闰年加1天,若输入的那年是闰年,2月后,要加1天,反之不用*/
        int yDays = (year -1900)*365;

        int rDays = 0;//每个润年加1
        for (int i = 1900; i <=year ; i++) {
            if (i%4==0 && i%100!=0){//判断是否为闰年
                rDays++;//只要是闰年就加1
                if (month<3){//若输入的年份为润,判断其是否过了2月,没过减1
                    rDays = rDays-1;
                }
            }
        }
        /*2,月:
                按照平年每个月的天数:31,28,31,30,31,30,31,31,30,31,30,31*/
        int[] months = {31,28,31,30,31,30,31,31,30,31,30,31};
        int mDays = 0;
        if (month == 1){
            mDays = 0;
        }else{
            for (int i = 0; i <month-1 ; i++){//减1,因为当月没过,按下面的日期来算
                mDays += months[i];//累加当月之前的天数
            }

        }
        /*4,日期:
                天数直接相加*/

        int sum = yDays + rDays + mDays +days;

        System.out.println(sum);

    }
}

输出结果:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值