JAVA常见算法题(十四)

package com.xiaowu.demo;

/**
 * 输入某年某月某日,判断这一天是这一年的第几天?
 * 
 * 
 * @author WQ
 *
 */
public class Demo14 {
     public static void main(String[] args) {
            year(2017, 6, 5);
        }

     
         /**
          * 
          * 平年2月28天,闰年2月29天.
         * 年份数(末两位不是00)能被4整除的是闰年(如1988、1996)、年份数(末两位数是00的)能被400整除是也是闰年(如2000年,4000年).其余为平年.
          * 
          * 
          * 
          * @param year
          * @param month
          * @param day
          */
        public static void year(int year, int month, int day) {
            int d = 0;
            int days = 0;
            if (year < 0 || month < 0 || month > 12 || day < 0 || day > 31) {
                System.out.println("输入错误,请重新输入!");
            }
            for (int i = 1; i < month; i++) {
                switch (i) {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    days = 31;
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    days = 30;
                    break;
                case 2:
                    if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) {
                        days = 29;
                    } else {
                        days = 28;
                    }
                    break;
                }
                d += days;
            }
            System.out.println(year + "年" + month + "月" + day + "日是" + year + "的第"
                    + (d + day) + "天。");
        }
}
原文地址:https://www.cnblogs.com/mr-wuxiansheng/p/6947144.html