A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵国刚 中级黑马   /  2013-8-14 11:20  /  1671 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 赵国刚 于 2013-8-16 11:30 编辑

个学生从开始上这个学期上课期到结课一共上了多少天,周六日刨除。下列是我做的,编译通过了就是运行时卡在那里了。我把条件写成while(c.compareTo(c1)<=0)运行结果为0,不知道是否是思路错了,请高手指教提出错误,写出正确的做法。

class  CalendarTest
{
        public static void main(String[] args)
        {
                Calendar c1=Calendar.getInstance();
                c1.set(2012,6,10);
                int count=0;
                Calendar c=Calendar.getInstance();
                while(c.DAY_OF_YEAR<=c1.DAY_OF_YEAR)
                {
                        if (c.DAY_OF_WEEK>0&&c.DAY_OF_WEEK<6)
                        {
                                count++;
                        }
                        c.add(Calendar.DAY_OF_MONTH,1);
                }        

                System.out.println(count+"天");
        }
}

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1

查看全部评分

3 个回复

倒序浏览
你那个while 死循环了。 Calendar 取值不对 下面编的一个简单的例子
  1. public class CalendarTest {
  2.           public static void main(String[] args)
  3.       {
  4.               Calendar c1=Calendar.getInstance();
  5.               c1.set(2012,7,14,3,3);// 传入日期的时期最好是时分秒否则日期会算到下一个天
  6.               /*注意 Calendar 中得到的月份加一    int month = c.get(Calendar.MONTH) + 1;*/

  7.               int startTime=c1.get(Calendar.DAY_OF_YEAR);
  8.               Calendar c=Calendar.getInstance();
  9.               int endTime=c.get(Calendar.MONTH);
  10.               System.out.println(startTime+"--"+endTime);
  11.               int time=0;;
  12.               if(c.get(Calendar.YEAR)>=c1.get(Calendar.YEAR)){//判断可能还存在问题,简单的思路

  13.                               int dayTimes=endTime+365*(c.get(Calendar.YEAR)-c1.get(Calendar.YEAR))-startTime;
  14.                      
  15.                       time=dayTimes-(dayTimes/7)*2;
  16.                       
  17.               }
  18.             
  19.               
  20.               System.out.println(time);

  21.       }
  22. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 未知数|X| 于 2013-8-16 10:14 编辑

你这个要这样写的  count=1;//我用的before比较所以你要计算的结束日当天的花 count初值为1  while( c.befor(c1)){c.add(Calendar.DAY_OF_MONTH,1);if(c.get(Calendar.DAY _OF _WEEK )>1||c.get(Calendar.DAY _OF _WEEK )<7){count++;}} 你试试这个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马