有朋友要去传智博客学习java基础,他们上课一个半月时间。开始上三天休息一天,然后上两天休息一天,然后再上三天休息,再上两天休息。按此类推。写了一个小程序用于计算都是哪天休息,总工休息了多少天。
处女之作,写的不是很好。希望大家多多交流!- /*
- 目的:用于计算休息的日期。
- 思路:1、定义一个类进行封装,里面有方法用于计算哪天休息和总工休息的方法,因为要直接调用,所以定义为静态的。
- 2、关于计算的方法:使用遍历的方法。外循环控制总共学的天数,内循环用于控制日期。
- */
- class XiuXi
- {
- public static void main(String[] args)
- {
- //请再次输入:第一天上课时间,当月天数,总共课时天数。
- //注意:第一天上课时间,当月天数应当为有效日期,总共上课天数不得超过56天。
- LookXiuXi.JiSuan(2,31,56);
- }
- }
-
- class LookXiuXi
- {
- private static int xiuXiDay=0, xiuXiTianShu=0;
- static void JiSuan(int diYiTian,int meiYueTianShu,int xueXiTianShu )
- {
- if(0<diYiTian && diYiTian < meiYueTianShu && 28<=meiYueTianShu && meiYueTianShu<=31 && xueXiTianShu<56)
- {
- diaoYong(diYiTian,meiYueTianShu,xueXiTianShu );
- }
- else
- System.out.println("您的输入有误:注意您输入的日期必须为有效日期,并且学习日期不能超过56天!");
- }
- private static void diaoYong(int diYiTian,int meiYueTianShu,int xueXiTianShu )
- {
- int shangKe=diYiTian-1;
- for(int x=diYiTian;x<diYiTian+45;x=x+meiYueTianShu)
- {
- for(int y=diYiTian;y<meiYueTianShu && shangKe <diYiTian+xueXiTianShu-3; )
- {
- shangKe=shangKe+4;
- xiuXiDay=shangKe;
- if (xiuXiDay>meiYueTianShu)
- {
- xiuXiDay=shangKe-meiYueTianShu;
- }
- System.out.println("今天是"+xiuXiDay+"号,今天休息");
- xiuXiTianShu++;
- if(shangKe<diYiTian+xueXiTianShu-4)
- {
- shangKe=shangKe+3;
- xiuXiDay=shangKe;
- if (xiuXiDay>meiYueTianShu)
- {
- xiuXiDay=shangKe-meiYueTianShu;
- }
- System.out.println("今天是"+xiuXiDay+"号,今天休息");
- xiuXiTianShu++;
- y=y+7;
- }
- }
- }
- System.out.println("这一个半月,你一共休息了"+xiuXiTianShu+"天");
- }
- }
复制代码 |