Java节假日算法.docx_第1页
Java节假日算法.docx_第2页
Java节假日算法.docx_第3页
Java节假日算法.docx_第4页
Java节假日算法.docx_第5页
已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论