java键盘输入实战:输入年月日计算日期信息

本案例实现键盘输入自定义年月日,自动获取该日期的具体信息。

用到的知识点:

接口、语句控制、字符串/日期时间处理、单例模式、IO、线程等。

目录

全量代码

效果


全量代码

package com.wl.ms.demo;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;



import java.util.Scanner;

public class YearMonthDay {
	public static void main(String[] args) {
		Outer2 outer = OuterImpl2.getInstance();
		while(true){
		String str = outer.shuru();
		outer.dayParse(str);
		outer.xinqi(str);
		}
	}
}

interface Outer2 {
	public String shuru();
	public void dayParse(String str);
	public void xinqi(String str);
}

class OuterImpl2 implements Outer2 {

	/*
	 * YearMonthDay (non-Javadoc)
	 * 
	 * @see com.wl.ms.demo.Outer#panduan(int)
	 * 
	 */
	//创建实例
	private static OuterImpl2 newInstance = new OuterImpl2();
	public static OuterImpl2 getInstance(){
		return newInstance;
	}
	private OuterImpl2(){}
	
	@Override
	public void xinqi(String str) {
		String s[] = str.split("-");
		int sYear = Integer.parseInt(s[0]);
		int sMonth = Integer.parseInt(s[1]);
		int sDay = Integer.parseInt(s[2]);
		
		SimpleDateFormat sdf = new SimpleDateFormat("dd MM yyyy");
		java.util.Date date = null;
		try {
			date = sdf.parse(sDay+" "+sMonth+" "+sYear);
			
		} catch (ParseException e) {
			e.printStackTrace();
		}
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		int weekDay = calendar.get(Calendar.DAY_OF_WEEK);
		switch (weekDay) {
		case 1:
			System.out.println(" 星期天");
			break;
		case 2:
			System.out.println(" 星期一");
			break;
		case 3:
			System.out.println(" 星期二");
			break;
		case 4:
			System.out.println(" 星期三");
			break;
		case 5:
			System.out.println(" 星期四");
			break;
		case 6:
			System.out.println(" 星期五");
			break;
		case 7:
			System.out.println(" 星期六");
			break;
		default:
			break;
		}
	}

	@Override
	public void dayParse(String str) {
		int day = 0;
		int days=0;
		String s[] = str.split("-");
		int sYear = Integer.parseInt(s[0]);
		int sMonth = Integer.parseInt(s[1]);
		int sDay = Integer.parseInt(s[2]);
		for (int i = 1; i < sMonth; i++) {
			switch (i) {
			case 1:
			case 3:
			case 5:
			case 7:
			case 8:
			case 10:
			case 12: {
				day = 31;
				break;
			}
			case 4:
			case 6:
			case 9:
			case 11: {
				day = 30;
				break;
			}
			case 2:
				if ((sYear % 4 == 0)) {
					day=29;
				}else{
					day=28;
				}
			default:
				break;
			}
			days = day+days;
		}
			days = days+sDay;
			System.out.print("您好,这是"+sYear+"年的第"+days+"天 ");
	}

	@Override
	public String shuru() {
		int e = 0;
		String str = "";
		Scanner sc = new Scanner(System.in);
		do {
			System.out.println("请输入年份:");
			int year = sc.nextInt();
			System.out.println("请输入月份:");
			int month = sc.nextInt();
			System.out.println("请输入天:");
			int day = sc.nextInt();
			str = year + "-" + month + "-" + day;
			if (year > 0 && month > 0 && month <= 12 && day > 0 && day < 31) {
				System.out.println("您输入的日期是:" + str + ",请稍等,结果马上出来...");
				try {
					Thread.sleep(1000);
				} catch (InterruptedException e1) {
					e1.printStackTrace();
				}
				e = 1;
				return str;
			} else {
				try {
					throw new Exception("您输入的日期有误,请重新输入!");
				} catch (Exception e1) {
					e1.printStackTrace();
				}
				e = 0;
//				return null;
			}
		} while (e == 1);
		return str;
	}


}

效果

请输入年份:
2019
请输入月份:
9
请输入天:
20
您输入的日期是:2019-9-20,请稍等,结果马上出来...
您好,这是2019年的第263天  星期五
请输入年份:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ProblemTerminator

您的鼓励将是作者最大的动力哦!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值