




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java节假日算法这里有三个类分别是:1. DateToDate 2. Vacation 3. WorkDateimport java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util.List;import java.util.Scanner;public class DateToDate/* 在beginDate和endDate之间所包含假期的天数,若不包含则返回0;* 假期和周末分别进行单独考虑!* param list* param beginDate* param endDate* return*/public static int getContainVacation(List list, Date beginDate, Date endDate) int days = 0; Calendar begincal = new GregorianCalendar(); Calendar endcal = new GregorianCalendar(); begincal.setTime(beginDate); endcal.setTime(endDate); for (int i = 0; i list.size(); i+) System.out.println(执行到这里了!); Vacation vac = (Vacation) list.get(i); Date tempDate = vac.getDate(); Calendar tempcal = new GregorianCalendar(); tempcal.setTime(tempDate); int tempDays = vac.getDays(); int tempDay = tempcal.get(Calendar.DAY_OF_YEAR); int dd=0; if (tempDate.after(endDate) | (tempDate.before(beginDate) System.out.println(tempDate.after(endDate); System.out.println(执行到这里了吗?!); continue; else System.out.println(应该执行到这里了!); while (tempDay endcal.get(Calendar.DAY_OF_YEAR) & ddtempDays) System.out.println(符合条件吗?);/ tempcal.set(Calendar.DAY_OF_MONTH,tempDay);/原来是你在作怪! /节假日和周末可能有重叠的情况! if(tempcal.get(Calendar.DAY_OF_WEEK)=2 |(tempcal.get(Calendar.DAY_OF_WEEK)=1) System.out.println(tempcal.get(Calendar.DAY_OF_WEEK)=2); System.out.println(tempcal.get(Calendar.DAY_OF_WEEK)=1); System.out.println(节假日和周末重叠的情况!+tempcal.get(Calendar.DAY_OF_WEEK); days-; tempcal.add(Calendar.DAY_OF_WEEK,1); dd+;/计数器自增,不能超出法定的假期数。 days+;/符合这两种条件的自增。看一下有多少天! tempDay+;/法定假日自增,不能超出endDate的日期数! /单独考虑周末的情况!不知道哪一个数字代表周六,周日! System.out.println(周末!); for(int j=begincal.get(Calendar.DAY_OF_YEAR);j 0) throw new IllegalArgumentException(日期输入不正确!); days = (endDate.getTime() - beginDate.getTime() / (1000 * 60 * 60 * 24); catch (Exception e) e.getStackTrace(); return (int) days;/* 从键盘标准输入两个日期!* return*/public static String getInDate() System.out.println(请输入开始和结束日期!格式如下:yyyy-MM-dd); Scanner scanner=new Scanner(System.in); String str=scanner.nextLine(); String array=str.split( ); return array;public static void main(String args) String str=DateToDate.getInDate(); SimpleDateFormat format=new SimpleDateFormat(yyyy-MM-dd); try Date beginDate=format.parse(str0); Date endDate=format.parse(str1); File file=new File(F:jinxing.txt); List list=DateToDate.getDateFromFile(file); int days=DateToDate.getContainVacation(list, beginDate, endDate); System.out.println(总共的节假日包括周末:+days); int allday=DateToDate.getDays(beginDate, endDate); System.out.println(总共的天数:+allday); System.out.println(总共的工作日为:+(allday-days); catch(Exception e) e.getStackTrace(); /利用面向对象的思想把假期进行封装成实体类!import java.io.Serializable;import java.util.Date;public class Vacation implements Serializable /* */private static final long serialVersionUID = 1L;private Date date;private int days;public Date getDate() return date;public void setDate(Date date) this.date = date;public int getDays() return days;public void setDays(int days) this.days = days;、import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.List;import java.util.Scanner;public class WorkDate/* 通过给定日期和工作日计算工作日以后的日期!* * param beginDate* param workDays*/public static Date getDate(Date beginDate, int workDays, List list) Date endDate = beginDate; Calendar calBegin = Calendar.getInstance(); calBegin.setTime(beginDate); int count = 1; Calendar calFile = Calendar.getInstance(); while (count = workDays) int tempBeginWeek = calBegin.get(Calendar.DAY_OF_WEEK); if (tempBeginWeek 1) / 循环它的假期的天数! for (int i = 0; i list.size(); i+) System.out.println(至少应该循环两次!); Vacation vac = (Vacation) list.get(i); Date fileDate = vac.getDate(); calFile.setTime(fileDate); int fileDay = vac.getDays(); int tempFileDays = calFile.get(Calendar.DAY_OF_YEAR);/ 年中的第几天 System.out.println(该假期是年中的第几天: + tempFileDays); System.out.println(今天是周几 + tempBeginWeek); for (int j = tempFileDays; j (tempFileDays + fileDay); j+) if (calBegin.get(Calendar.DAY_OF_YEAR) = j) System.out.println(应该有10月份的值!); count-; count+; calBegin.add(Calendar.DATE, 1); endDate = calBegin.getTime(); return endDate;/* 从文件中获取节假日,返回一个集合!* * param file* return* throws Exception*/public static List getListVacation(File file) throws Exception List list = new ArrayList(); list = (List) WorkDate.getVacationDateFromFile(file); return list;/* 标准输入,从屏幕输入起始日期和工作日参数!* * return*/public static String getIn() System.out.println(请输入起始日期和工作日参数!); String str = ; Scanner scanner = new Scanner(System.in); str = scanner.nextLine(); String array = str.split( ); while (true) if (array.length = 1) System.out.println(请您正确输入所需的参数!); str = scanner.nextLine(); array = str.split( ); else break; return array;/* 将字符串进行拆分,返回一个Vacation对象!* * param str* return* throws ParseException*/public static Vacation divideStr(String array) throws ParseException Vacation vac = new Vacation(); SimpleDateFormat format = new SimpleDateFormat(yyyy-MM-dd); Date date = format.parse(array0); vac.setDate(date); int days = Integer.parseInt(array1); vac.setDays(days); return vac;/* 从文件中读取字符串到集合中,然后返回集合。* * param file* return* throws Exception*/public static List getVacationDateFromFile(File file) throws Exception List list = new ArrayList(); BufferedReader breader = new BufferedRe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025贵州茅台酒厂(集团)习酒有限责任公司招聘退伍军人100人笔试历年参考题库附带答案详解
- 2025贵州水务大龙有限公司招聘1人笔试历年参考题库附带答案详解
- 2025湖南张家界市公安局招聘警务辅助人员360人考前自测高频考点模拟试题及答案详解(各地真题)
- 2025福建福州平潭旅游股份有限公司招聘劳务派遣员工15人笔试历年参考题库附带答案详解
- 2025福建省五建建设集团第二批招聘36人笔试历年参考题库附带答案详解
- 2025福建三明市属国企招聘6人笔试历年参考题库附带答案详解
- 2025安徽工程大学硕士专职辅导员招聘8人模拟试卷带答案详解
- 2025浙江宁波市余姚市城市排水有限公司招聘拟录用人员笔试历年参考题库附带答案详解
- 2025河南南阳西峡县宜居城镇工程建设有限公司招聘工作人员(第六号)笔试历年参考题库附带答案详解
- 2025广西钦州市灵山县城市建设集团有限公司招聘27人笔试历年参考题库附带答案详解
- DeepSeek从入门到精通
- 过敏性紫癜课件
- 《全国计算机等级考试教程:二级WPS Office高级应用与设计》全套教学课件
- 八年级英语组工作总结
- 纺织厂员工劳动合同范本
- 光伏项目合伙投资协议书
- 护理团队建设与管理方案
- 2022版ISO27001信息安全管理体系基础培训课件
- 建筑项目保温材料供货合同书
- there-be-句型作业及答案(初中英语语法专项练习)
- 2024-2025学年人教版八年级英语上册Unit 2 测试卷
评论
0/150
提交评论