题目:算日期

输入一个日期,输出这是这一年的第几天。(题目中没有给出闰年的定义)
输入 20131231

输出 365

package com.soft.wk;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CalculationDate {

	public static void main(String[] args) throws IOException {
		/**
		 * 1、判断输入的是否都是数字,并判断长度是否为8
		 * 2、判断是否是年月日的组合
		 * 3、判断是平年还是闰年
		 * 4、计算日期
		 */
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		
		String str = in.readLine();
		String trim = str.trim();
		int isNumDay = 0;
		
		if(trim != null && !"".equals(trim)){
			
			if(trim.length() == 8){
				String year = trim.substring(0, 4);
				System.out.println("年份:" + year);
				String month = trim.substring(4, 6);
				System.out.println("月份:"+month);
				String day = trim.substring(6, trim.length());
				System.out.println("日:" + day);
				
				//判断是平年还是闰年 能被4整除或者能被400整除的同时被100整除
				int yearNum = Integer.parseInt(year);
				int monthNum = Integer.parseInt(month);
				int dayNum = Integer.parseInt(day);
				  
				if((0 == yearNum % 400 && 0 == yearNum % 100) || 0 == yearNum % 4){
					//闰年
					switch(monthNum){
						case 1:
							isNumDay = dayNum;
							break;
						case 2:
							isNumDay = dayNum + 31;
							break;
						case 3:
							isNumDay = dayNum + 31 + 29;
							break;
						case 4:
							isNumDay = dayNum + 31 + 29 + 31;
							break;
						case 5:
							isNumDay = dayNum + 31 + 29 + 31 + 30;
							break;
						case 6:
							isNumDay = dayNum + 31 + 29 + 31 + 30 + 31;
							break;
						case 7:
							isNumDay = dayNum + 31 + 29 + 31 + 30 + 31 + 30;
							break;
						case 8:
							isNumDay = dayNum + 31 + 29 + 31 + 30 + 31 + 30 + 31;
							break;
						case 9:
							isNumDay = dayNum + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31;
							break;
						case 10:
							isNumDay = dayNum + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30;
							break;
						case 11:
							isNumDay = dayNum + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31;
							break;
						case 12:
							isNumDay = dayNum + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30;
							break;
						}
				}else{
					//平年
					switch(monthNum){
					case 1:
						isNumDay = dayNum;
						break;
					case 2:
						isNumDay = dayNum + 31;
						break;
					case 3:
						isNumDay = dayNum + 31 + 28;
						break;
					case 4:
						isNumDay = dayNum + 31 + 28 + 31;
						break;
					case 5:
						isNumDay = dayNum + 31 + 28 + 31 + 30;
						break;
					case 6:
						isNumDay = dayNum + 31 + 28 + 31 + 30 + 31;
						break;
					case 7:
						isNumDay = dayNum + 31 + 28 + 31 + 30 + 31 + 30;
						break;
					case 8:
						isNumDay = dayNum + 31 + 28 + 31 + 30 + 31 + 30 + 31;
						break;
					case 9:
						isNumDay = dayNum + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31;
						break;
					case 10:
						isNumDay = dayNum + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30;
						break;
					case 11:
						isNumDay = dayNum + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31;
						break;
					case 12:
						isNumDay = dayNum + 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30;
						break;
					}
				}
			}
		}
		System.out.println("是输入年份的第"+isNumDay+"天");
	}
	
	/**
	 * 判断是否匹配数字
	 * @param number
	 * @return
	 */
	public static boolean isNumber(String number){
		if(number != null && !"".equals(number)){
			Pattern p = Pattern.compile("^[0-9]+$");
			Matcher m = p.matcher(number);
			if(!m.matches()){
				return false;
			}
		}
		return true;
		
	}
	
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值