某公司软件开发工程师孙工,作息规律为上三天班,休息一天,经常不确定休息日 是否周末,为此,请你开发一个程序,当孙工输入年及月,以日历方式显示对应月 份的休息日,用中括号进行标记.同时,统计出本月有几天休息,轮到周末休息有 几天.(注:首次休息日是 2019 年 2 月 2 日)

public class FindRestday {public static void main(String[] args) {while (true) {Scanner input = new Scanner(System.in);System.out.println("请输入年:");int year = input.nextInt();System.out.println("请输入月:");int month = input.nextInt()-1;//0-11月,比实际月小1Calendar cal = Calendar.getInstance();//设置输入的年月cal.set(Calendar.YEAR, year);cal.set(Calendar.MONTH, month);int maxDay = cal.getActualMaximum(Calendar.DATE);//获取当月的日的最大值cal.set(Calendar.DATE, 1);//将日期调为本月的1号int firstDay = cal.get(Calendar.DAY_OF_WEEK);//获取这个1号是本周的第几天//设置输入日期cal.set(year, month, maxDay, 0, 0, 0);Date endDate = cal.getTime();//设置初次休息开始日cal.set(2019, 1, 2, 0, 0, 0);//0-11月,比实际月小1,这里将日期设置为2019 年 2 月 2 日0时0分0秒Date startDate = cal.getTime();//所输入 当年当月的最大天数 与 初次休息开始日 相差天数long betweenDate = (endDate.getTime() - startDate.getTime())/(60*60*24*1000);
//        System.out.println("天数差:"+betweenDate);//设置输入的年月,并将日期设置为1号cal.set(year, month, 1, 0, 0, 0);Date endDate2 = cal.getTime();//所输入 当年当月的第一天 与 初次休息开始日 相差天数long betweenDate2 = (endDate2.getTime() - startDate.getTime())/(60*60*24*1000);
//        System.out.println("天数差2:"+betweenDate2);int blankNum = firstDay-1;//空格数System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t");//循环打印出在本月1号前的空格数for (int j = 0; j < blankNum; j++) {System.out.print("\t");}int count = 0;//本月休息日计数器int[] restDay = new int[maxDay];//存放本月休息日的数组int js=0;//本月周末休息天数计数器//从2019.2.2开始寻找休息日for (int d = 0; d < betweenDate; d++) {int rest = (int) (d-betweenDate2+1);if (d>=betweenDate2 && d%4==0) {//在本月的休息日count++;//本月休息日+1restDay[rest-1] = rest;//休息日存放到数组}}//打印本月日历for (int i = 1; i <= maxDay; i++) {if(i==restDay[i-1]) {//判断日历与休息日是否相等,相等则框起来System.out.print("["+i+"]"+"\t");if((i+blankNum)%7==0 || (i+blankNum)%7==1)  {//位置在每行第7个与每行第1个的都为周末js++;//本月周末休息天数+1}} else {System.out.print(i+"\t");}if((i+blankNum)%7==0) System.out.println();//每行满7个换行}System.out.println();System.out.println("本月休息天数有:"+count);System.out.println("本月轮到周末休息天数是:"+js+"天");System.out.println("==============================================================");System.out.println("是否继续?:1.是   2.否");int isContinue = input.nextInt();if(isContinue==2) break;}}
}

某公司软件开发工程师孙工,作息规律为上三天班,休息一天,经常不确定休息日 是否周末,为此,请你开发一个程序,当孙工输入年及月,以日历方式显示对应月 份的休息日,用中括号进行标记.同时,统计出本月有几天相关推荐

  1. 某公司软件开发工程师孙工,作息规律为上三天班,休息一天,经常不确定休 息日是否周末,为此,请你开发一个程序,当孙工输入年及月,以日历方式显示对 应月份的休息日,用中括号进行标记.同时,统计出本月有几天

    By 张旭CaesarChang                合作: root121toor@gmail.com ~关注我  带你看更多精品知识 某公司软件开发工程师孙工,作息规律为上三天班,休息一 ...

  2. 编写一个程序,根据用户输入的英文名和姓先显示姓氏,其后跟一个逗号,然后显示名的首字母,最后加一个点:

    编写一个程序,根据用户输入的英文名和姓先显示姓氏,其后跟一个逗号,然后显示名的首字母,最后加一个点: 代码如下: #include <stdio.h> int main() {char n ...

  3. 张老太养了两只猫:一只叫小花,今年3岁白色。另一只叫小白,今年3岁花色,编写一个程序,当用户输入小猫的名字时,就显示该猫的名字、年龄、颜色。如果输入的小猫名错误, 则显:张老太没有这只猫。

    //    1. 案例题目描述:   按要求完成以下题目 //    张老太养了两只猫:一只叫小花,今年3岁白色.另一只叫小白,今年3岁花色. //    请 编写一个程序,当用户输入小猫的名字时,就 ...

  4. Java黑皮书课后题第3章:**3.21(科学:某天是星期几)泽勒一致性...编写程序,提示用户输入年、月、该月的哪一天,显示它是一周中的星期几

    **3.21(科学:某天是星期几)泽勒一致性...编写程序,提示用户输入年.月.该月的哪一天,显示它是一周中的星期几 题目 题目概述 运行示例 破题 代码 题目 题目概述 **3.21(科学:某天是星 ...

  5. Java黑皮书课后题第5章:**5.22(金融应用:显示分期还贷时间表)对于给定的贷款额,月支付额包括偿还本金及利息。编写一个程序,让用户输入贷款总额年限利率,然后显示分期还贷时间表

    5.22(金融应用:显示分期还贷时间表)对于给定的贷款额,月支付额包括偿还本金及利息.编写一个程序,让用户输入贷款总额年限利率,然后显示分期还贷时间表 题目 题目概述 运行示例 代码 题目 题目概述 ...

  6. Java黑皮书课后题第4章:*4.17(一个月的天数)编写一个程序,提示用户输入一个年份和一个月份名称的前3个字母(第一个字母使用大写形式),显示该月中的天数。如果月份非法则显示出错信息

    *4.17(一个月的天数)编写一个程序,提示用户输入一个年份和一个月份名称的前3个字母(第一个字母使用大写形式),显示该月中的天数.如果月份非法则显示出错信息 题目 题目概述 破题 运行示例 代码 题 ...

  7. 某公司有一台打印、复印一体机,需要将购买成本分年均摊到隔年的费用中。请编写一个程序,根据用户输入的购买金额和预计使用年限计算每年的分摊费用。要求对输入异常进行适当的处理。

    某公司有一台打印.复印一体机,需要将购买成本分年均摊到隔年的费用中. 请编写一个程序,根据用户输入的购买金额和预计使用年限计算每年的分摊费用. 要求对输入异常进行适当的处理. def compute_ ...

  8. 要求: 编写一个程序,提示用户输入: 姓名 ,身份证号(需要一次输完,中间用逗号分隔)随后打印用户的星座。 提示:输入功能用C实现会很简单,其他语言的话,就不用输入姓名和逗号了,直接输入身份证号就

    #include <stdio.h>int main(void) {char name[10]; //存储姓名int a, b; //a代表月,b代表日printf("请输入姓名 ...

  9. python输入10个整数_python练习:编写一个程序,要求用户输入10个整数,然后输出其中最大的奇数,如果用户没有输入奇数,则输出一个消息进行说明。...

    python练习:编写一个程序,要求用户输入10个整数,然后输出其中最大的奇数,如果用户没有输入奇数,则输出一个消息进行说明. 重难点:通过input函数输入的行消息为字符串格式,必须转换为整型,否则 ...

最新文章

  1. 工信部:筹建全国首个区块链和分布式记账标准化技术委员会
  2. 移动端监听安卓手机返回键
  3. Xstream解析报文
  4. VS2015调试时没有启动IIS Express Web服务器 或者停止调试时 IIS Express 跟着关闭
  5. Error:To install them, you can run: npm install --save vue-style-loader css-loader……
  6. 你离Python大神就差这课树了!建议收藏|Python技能树测评
  7. Python 必备要点总结及环境搭建(上)
  8. java character_[转载]Java中Character类的使用方法
  9. mac 命令 vim 快捷键
  10. keep-alive用法(include、exclude、max)
  11. JavaSE StringBuffer StringBuilder 数组常见操作 Arrays 基本数据类型包装类
  12. 鸿蒙不是Linux也不是安卓
  13. word中的神奇的“Alt + X”
  14. 【JavaScript】JavaScript模拟实现面向对象一张图帮助你深刻理解原型链和原型对象
  15. 怎样设置计算机默认字体及语言,电脑中默认输入法如何设置 Win7系统设置默认输入法技巧...
  16. 使用apktool解包和打包apk
  17. STM32F4单片机bootloader及在线升级IAP基本原理
  18. Asterisk[1]
  19. C语言:实现勾股定理的运算
  20. 如何下载pycharm历史版本

热门文章

  1. Jmeter-jp@gc - JSON/YAML Path Extractor 用法之获取数组长度
  2. 大学生学计算机的自我介绍范文带翻译,大学英语自我介绍范文带翻译
  3. pwd命令,cd命令的使用方法
  4. 【蓝桥杯预备营集结九】软件类 C/C++ 预备试题分析及解答
  5. spring gateway 简约易懂版
  6. 3GPP TS 23.040 -- SMS -- part2(第九章节 Protocols and protocol architecture,协议和协议架构)
  7. uni-app葵花宝典(欲练此功,必先自宫)
  8. 移动边缘网络环境中的数据同步方法
  9. 华为教小米如何做人:雷军吹牛逼遭通信博士打脸
  10. 如何用虚拟打印机将其他文件(word,excel,ppt等)转换为PDF