无Bug,计算输入的日期是今年的第几天

无Bug,计算输入的日期是今年的第几天

源代码

package com.newer.oop;

import java.util.InputMismatchException;
import java.util.Scanner;

/**
 * @author 韩楚齐 
 * @date 2018/7/28 
 * @see 判断输入的日期是这一年的第几天
 */
public class JudgementDays {
    private static Scanner sc;
    static boolean dayPanDuan; // 判断该月份天数是否合法
    static int year; // 输入的年份
    static int month; // 输入的月
    static int daySum; // 输入的日期是今年的第一天到输入日期的总天数
    static int dayNum; // 表示某月的天数,初始值为0

    /* 判断该月份的天数是否合法的方法 */
    public static void PanDuanday(int year, int month, int day) {
        switch (month) {
        case 1:
            if (day >= 1 && day <= 31) { // 日期在该月份中,dayPanDuan为ture
                dayPanDuan = true;
                break;
            } else { // 日期在该月份中,dayPanDuan为false
                dayPanDuan = false;
                break;
            }
        case 2:
            if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) { // 闰年2月29天
                if (day >= 1 && day <= 29) {
                    dayPanDuan = true;
                    break;
                } else { // 平年2月28天
                    dayPanDuan = false;
                    break;
                }
            } else {
                if (day >= 1 && day <= 28) {
                    dayPanDuan = true;
                    break;
                } else {
                    dayPanDuan = false;
                    break;
                }
            }
        case 3:
            if (day >= 1 && day <= 31) {
                dayPanDuan = true;
                break;
            } else {
                dayPanDuan = false;
                break;
            }
        case 4:
            if (day >= 1 && day <= 30) {
                dayPanDuan = true;
                break;
            } else {
                dayPanDuan = false;
                break;
            }
        case 5:
            if (day >= 1 && day <= 31) {
                dayPanDuan = true;
                break;
            } else {
                dayPanDuan = false;
                break;
            }
        case 6:
            if (day >= 1 && day <= 30) {
                dayPanDuan = true;
                break;
            } else {
                dayPanDuan = false;
                break;
            }
        case 7:
            if (day >= 1 && day <= 31) {
                dayPanDuan = true;
                break;
            } else {
                dayPanDuan = false;
                break;
            }
        case 8:
            if (day >= 1 && day <= 31) {
                dayPanDuan = true;
                break;
            } else {
                dayPanDuan = false;
                break;
            }
        case 9:
            if (day >= 1 && day <= 30) {
                dayPanDuan = true;
                break;
            } else {
                dayPanDuan = false;
                break;
            }
        case 10:
            if (day >= 1 && day <= 31) {
                dayPanDuan = true;
                break;
            } else {
                dayPanDuan = false;
                break;
            }
        case 11:
            if (day >= 1 && day <= 30) {
                dayPanDuan = true;
                break;
            } else {
                dayPanDuan = false;
                break;
            }
        case 12:
            if (day >= 1 && day <= 31) {
                dayPanDuan = true;
                break;
            } else {
                dayPanDuan = false;
                break;
            }
        }
    }

    /* 计算输入的日期是今年的第一天到输入日期的总天数的方法,返回daySum */
    public static int AddDay() {
        for (int monthNum = month; monthNum > 0; monthNum--) { // 放入循环中进行累加天数
            switch (month) {
            case 1:
                dayNum = 31;
                break;
            case 2:
                //闰年2月29天
                if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) { // 闰年
                    dayNum = 29;
                    break;
                } else {   //闰年2月28天
                    dayNum = 28;
                    break;
                }
            case 3:
                dayNum = 31;
                break;
            case 4:
                dayNum = 30;
                break;
            case 5:
                dayNum = 31;
                break;
            case 6:
                dayNum = 30;
                break;
            case 7:
                dayNum = 31;
                break;
            case 8:
                dayNum = 31;
                break;
            case 9:
                dayNum = 30;
                break;
            case 10:
                dayNum = 31;
                break;
            case 11:
                dayNum = 30;
                break;
            case 12:
                dayNum = 31;
                break;
            }
            daySum += dayNum; // 计算出总天数daySum
        }
        return daySum;
    }

    public static void main(String[] args) {
        try {
            sc = new Scanner(System.in);
            System.out.print("请输入年:");   
            year = sc.nextInt();   //输入年
            System.out.print("请输入月:");
            month = sc.nextInt();   //输入月
            if (month >= 1 && month <= 12) { // 判断月份是否输入正确,是否在1-12中
                System.out.print("请输入日:");
                int day = sc.nextInt(); // 输入日期
                PanDuanday(year, month, day); // 调用判断日期的方法
                if (dayPanDuan == true) { // 日期在该月份中,dayPanDuan为ture
                    System.out.println("日期"+year + "/" + month + "/" + day + "是" + year + "年的第" + AddDay() + "天");
                } else {  //日期在该月份中,dayPanDuan为false
                    daySum = AddDay();
                    System.out.println("日期不能大于" + dayNum+" ,请重新输入!");   //提示输入有误
                }
            } else { // 月份不在1-12中
                System.out.println("输入月份有误,程序退出。");
            }
        } catch(InputMismatchException e) {
            System.out.println("输入有误,程序退出。");
        } catch(Exception e) {
            System.out.println("其他错误。");
            e.printStackTrace();
        } finally {
            System.exit(0);   //退出程序
        }
    }
}

代码仅供参考,谢谢

2018/8/6

猜你喜欢

转载自blog.csdn.net/qq_39869062/article/details/81450565