Java——计算用户输入的日期离1900年1月1日相距多少天

题目:计算用户输入的日期离1900年1月1日相距多少天

解析:

  1. 用户输入日期,所以需要使用Scanner获取用户键盘输入数据
  2. 计算输入日期距离xxxx多少天,所以就是获取相差年份的天数+相差月份天数+相差天数
注意:
  1. 获取年份相差天数时要注意闰年平年,闰年366天,而平年是365天;
  2. 获取年份相差天数时,要注意不需要获取输入的年份当年的天数,因为输入的年份的天数是由输入的月份和天数决定的(极大可能不满365天)
  3. 在获取月份时,如果是一月,是不能直接加31天的(1月还没过完,这里可以直接跳过加输入年的月份,直接加日数即可)
  4. 在获取月份时,如果是1月和2月,注意2月的天数是由用户输入的决定,还不需要计算平年闰年;当用户输入的月份是3月及更后(此时二月肯定已经过完了,这时候计算输入的年份是否是闰年来决定总天数是否需要+1)
  5. 在计算完年份月份的天数时,需要加的日数需要减一(题目是相加多少天)

代码实现:

public class Demo {
   public static void main(String[] args) {
       Scanner input = new Scanner(System.in);
       System.out.print("请输入年份:");
       int year = input.nextInt();
       System.out.print("请输入月份:");
       int month = input.nextInt();
       int arr[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30};//这里列出(平年)1到11月的天数,就算用户输入的是12月,需要加的天数也是由输入日数决定的
       System.out.print("请输入日数:");
       int day = input.nextInt();
       int sum = 0;// 声明变量存放相距的天数
       for (int i = 1900; i < year; i++) {//此处不能等于年份year
           if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)) {// 判断1900年至year之间的年份是否闰年
               sum += 366;
           } else {
               sum += 365;
           }
       }
       if (month != 1 && month != 2){// 在肯定过了2月后,判断输入年份是否闰年
           if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
               sum += 1;
           }
       }
       for (int j = 1; j < month; j++) {//计算输入月份(不包括)的天数,当month是1时自动跳过该循环
           sum += arr[j-1];
       }
       sum += day - 1;//加上日数-1,计算相距天数
       System.out.println(sum);
   }
}

在编译完成后验证是否正确(日期计算器等)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值