如何判断每个月有几个星期天?

解决方案 »

  1.   

    java.util.Hashtable ht=new java.util.Hashtable(12);
    java.util.Calendar c=java.util.Calendar.getInstance();
    c.set(2006,0,1);
    while(c.get(c.YEAR)==2006)
    {
      c.set(c.DAY_OF_YEAR,c.get(c.DAY_OF_YEAR)+1);
      if(c.get(c.DAY_OF_WEEK)==1)
      {
        Integer month=Integer.valueOf(c.get(c.MONTH));
        Integer obj=(Integer)ht.get(month);
        if(obj==null)
        ht.put(month,Integer.valueOf(1));
        else
        ht.put(month,Integer.valueOf(obj.intValue()+1));
      }
    }for(int i=0;i<12;i++)
    {
      int week=((Integer)ht.get(Integer.valueOf(i))).intValue();
      System.out.println((i+1)+"月,共有"+week+"个星期天.");
    }
    此方法感觉有点笨, 哈哈. 不知那位大侠,还有高招.分享一下吧
      

  2.   

    java.util.Hashtable ht=new java.util.Hashtable(12);
    java.util.Calendar c=java.util.Calendar.getInstance();
    c.set(2006,0,1);//先把日期改为1月1日
    while(c.get(c.YEAR)==2006)
    {
      c.set(c.DAY_OF_YEAR,c.get(c.DAY_OF_YEAR)+1);//把日期改为明天
      if(c.get(c.DAY_OF_WEEK)==1)//判断是否是星期天.(星期天是一个星期中的第一天)
      {
        Integer month=Integer.valueOf(c.get(c.MONTH));//取月份
        Integer obj=(Integer)ht.get(month);//取ht中月份的值
        if(obj==null)
        ht.put(month,Integer.valueOf(1));////如果不存在,默认值为1
        else
        ht.put(month,Integer.valueOf(obj.intValue()+1));////否则,加1
      }
    }
    for(int i=0;i<12;i++)
    {
      int week=((Integer)ht.get(Integer.valueOf(i))).intValue();///i+1 是月份
      System.out.println((i+1)+"月,共有"+week+"个星期天.");
    }
    版主呢.申请加精......
      

  3.   

    看看这个是不是你想要的:public static void main(String args[]) {
    int weekdays[] = new int[12];    /* 每个月有几个周日结果 */
    int startYear = 2005;            /* 想要统计的年份
    String curDate = startYear+"0101";

    GregorianCalendar cal = new GregorianCalendar();
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");

    try {
    cal.setTime(dateFormat.parse(curDate));
    } catch (ParseException e) {
    // TODO 自动生成 catch 块
    e.printStackTrace();
    }

                      /* yyyy0101所在的周日有可能是上年的 */
    cal.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.SUNDAY);
    if (cal.get(GregorianCalendar.YEAR) == startYear)
    weekdays[cal.get(GregorianCalendar.MONTH)]++;

    while (true) {
    System.out.println("sunday=" + dateFormat.format(cal.getTime()));
    cal.add(GregorianCalendar.DATE, 7);
    if (cal.get(GregorianCalendar.YEAR) != startYear) break;

    weekdays[cal.get(GregorianCalendar.MONTH)]++;
    }
    System.out.println("over!");
    }
      

  4.   

    哦哦...应该把: /* yyyy0101所在的周日有可能是上年的 */
    ...后面的部分都放到try里
      

  5.   

    c.set(2006,0,1);//先把日期改为1月1日
    这句我这里怎么出错阿
      

  6.   

    可能那是笔误,不存在2006-00-01,改为c.set(2006,1,1);
      

  7.   

    TO:qingoodrar
    請你仔細去看看API吧。不懂就不要隨便說!
      

  8.   

    嘿嘿,悔过:
    Month value is 0-based. e.g., 0 for January.
    多谢楼上指教!