小程序标题:计算有效上课天数
小程序题目:计算有效上课天数,每周六日不上课,计算任意年从九月到十月的有效上课天数
上一题楼层及时间:第177楼,时间为:2013年4月7日
上一题推荐的答案:无
本题目楼层及时间:第196楼 时间为:2013年4月9日
小程序答案:
在这里给出一个参考:
思路:
1、先计算出给定月份的天数
2、再通过遍历天数,用计数器计算非周六日的天数- public static int getValDay(int year,int startMON,int endMON)
- {
- //获取时间信息
- Calendar c = Calendar.getInstance();
- //调用获取天数函数
- int day = getDay(c,year,startMON,endMON);
- sop("总天数:" + day);//测试获取的天数
- //初始化星期
- int week = 0;
- //定义计数器
- int count = 0;
- //遍历每天一天,判断是否为周六日,f否的话计数器自增
- for(int i=0;i<day;i++)
- {
- //必须要先将天数加1再判断,否则到week为6的时候会一直continue,
- //而且此处也可以避免下面的week是以星期日为第一天的问题
- c.add(Calendar.DAY_OF_MONTH,1);
- //获取当前天数的星期
- week = c.get(Calendar.DAY_OF_WEEK);
- sop("星期:" + week);
- if (week==6 || week==7)
- continue;
- count++;
- sop("有效天数:" + count);
- }
- return count;
- }
- //获取给定月份的天数
- public static int getDay(Calendar c,int year,int startMON,int endMON)
- {
- //定义天数和变量
- int sum = 0;
- //遍历每个月的天数
- for(int i=0;i<=endMON-startMON;i++)
- {
- //设定第二个月的第一天,循环一次后设定下个月为处世月,因为0为一月份所以startMON要加1
- c.set(year,startMON+i,1);
- //获取前一个月的天数
- c.add(Calendar.DAY_OF_MONTH,-1);
- //将每个月的天数累加
- sum += c.get(Calendar.DAY_OF_MONTH);
- //循环后,要相应加上i个月
- c.add(Calendar.MONTH,i+1);
- }
- return sum;
- }
- }
复制代码 |