zoukankan      html  css  js  c++  java
  • WUSTOJ 1241: 到底是几月几日?(Java)

    1241: 到底是几月几日?

    题目

      输入年月日,输出当前日期是当年的第几天,输入年份和第几天,输出当前日期。更多内容点击标题。

    说明

      算是水题吧,仅提供代码做参考,不做分析。代码没用JDK自带的类,想用自带类(例如:Date类)的就绕道。学学基础的可以看看。代码略长(温馨提醒)。

    代码

    /**
     * time 268ms
     * @author PengHao
     * @version A1.1
     * @date 2019-04-29 下午12:11:07
     */
    
    import java.io.BufferedInputStream;
    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(new BufferedInputStream(System.in));
    		int k = 0; // 选择输入方式
    		int year, month, day; // 年月日
    		year = month = day = 0;
    		int daysOfYear = 0; // 这一年的第多少天
    		Date d = null; // 日期
    		while (sc.hasNext()) {
    			k = sc.nextInt();
    			if (1 == k) {
    				year = sc.nextInt();
    				month = sc.nextInt();
    				day = sc.nextInt();
    				d = new Date(year, month, day); // 实例
    				System.out.println(d.getDaysOfYear());
    			} else if (2 == k) {
    				year = sc.nextInt();
    				daysOfYear = sc.nextInt();
    				d = new Date(year, daysOfYear); // 实例
    				System.out.println(d.getDate());
    			}
    		}
    		sc.close();
    	}
    }
    
    /**
     * @author PengHao
     * @version 1.1
     * @date 2019年4月29日 下午12:34:20
     */
    class Date {
    	/**
    	 * @Field <code>year</code> 年
    	 */
    	private int year = 1900;
    	/**
    	 * @Field <code>month</code> 月
    	 */
    	private int month = 1;
    	/**
    	 * @Field <code>day</code> 日
    	 */
    	private int day = 1;
    	/**
    	 * @Field <code>daysOfYear</code> 当前日期是这一年的第多少天
    	 */
    	private int daysOfYear = 1;
    
    	/**
    	 * @param year  年
    	 * @param month 月
    	 * @param day   日
    	 */
    	public Date(int year, int month, int day) {
    		this.year = year;
    		this.month = month;
    		this.day = day;
    	}
    
    	/**
    	 * @param year       年
    	 * @param daysOfYear 当年的第几天
    	 */
    	public Date(int year, int daysOfYear) {
    		this.year = year;
    		this.daysOfYear = daysOfYear;
    	}
    
    	/**
    	 * @return the <code>daysOfYear</code>
    	 * @see #daysOfYear
    	 */
    	public int getDaysOfYear() {
    		daysOfYear();
    		return daysOfYear;
    	}
    
    	/**
    	 * @return 日期
    	 * @see #toFormatString()
    	 */
    	public String getDate() {
    		parse();
    		return toFormatString();
    	}
    
    	/**
    	 * Calculate <code>daysOfYear</code>
    	 * 
    	 * @see #daysOfYear
    	 */
    	private void daysOfYear() {
    		int days = day; // 当月的天数
    		// 月份天数表
    		int[] daysOfMonth = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    		// 闰年加1天
    		if (0 == year % 4 && 0 != year % 100 || 0 == year % 400) {
    			daysOfMonth[1]++;
    		}
    		// 前面month-1个月的天数
    		for (int i = 0; i < month - 1; i++) {
    			days += daysOfMonth[i];
    		}
    		this.daysOfYear = days;
    	}
    
    	/**
    	 * Calculate the date by the days
    	 */
    	private void parse() {
    		int month = 0;
    		int day = daysOfYear;
    		// 月份天数表
    		int[] daysOfMonth = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    		// 闰年二月加1天
    		if (0 == year % 4 && 0 != year % 100 || 0 == year % 400) {
    			daysOfMonth[1]++;
    		}
    		int i = 0;
    		while (i < 12 && day > daysOfMonth[i]) {
    			month++;
    			day -= daysOfMonth[i++];
    		}
    		this.month = month + 1;
    		this.day = day;
    	}
    
    	/**
    	 * @return 格式为:"<code>yyyy/MM/dd</code>"的日期字符串
    	 */
    	private String toFormatString() {
    		StringBuilder sb = new StringBuilder();
    		sb.append(String.valueOf(this.year)); // 年
    		sb.append("/");
    		if (this.month < 10) {
    			sb.append("0");
    		}
    		sb.append(this.month); // 月
    		sb.append("/");
    		if (this.day < 10) {
    			sb.append("0");
    		}
    		sb.append(this.day); // 日
    		return sb.toString();
    	}
    }
    
  • 相关阅读:
    codeforces 814B An express train to reveries
    codeforces 814A An abandoned sentiment from past
    codeforces 785D D. Anton and School
    codeforces 785C Anton and Fairy Tale
    codeforces 791C Bear and Different Names
    AOP详解
    Spring集成JUnit测试
    Spring整合web开发
    IOC装配Bean(注解方式)
    IOC装配Bean(XML方式)
  • 原文地址:https://www.cnblogs.com/wowpH/p/11060805.html
Copyright © 2011-2022 走看看