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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© smile_joe 中级黑马   /  2013-4-21 20:55  /  1720 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 smile_joe 于 2013-4-22 21:14 编辑

刚开始做的一种求法
package cn.joe;

import java.util.Calendar;
import java.util.Scanner;

//        从键盘输入一个年份,求出这一年中所有的星期天对应的日期

public class Test1 {

        /**
         * @param args
         */
        public static void main(String[] args) {
                method();
        }

        private static void method() {
                Scanner sc = new  Scanner(System.in);
                System.out.println("出入一个年份:");
                int i=sc.nextInt();
                Calendar c=Calendar.getInstance();
                c.set(i,0,1);
                //boolean flag=true;
               
                while(true) {//while(flag)
                        
                        if (c.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY) {
                                System.out.println(c.get(Calendar.MONTH)+1+"月"+c.get(Calendar.DAY_OF_MONTH)+"日");
                        }else if (c.get(Calendar.MONTH)==11 && c.get(Calendar.DAY_OF_MONTH)==31) {
//                                判断天数累加到11月31,一年完,就停止
//                                flag=false;
                                break;
                        }c.add(Calendar.DAY_OF_YEAR,1);
                }
        }

}
-----------------------------------------------------------------------------------------------自己试验其他的方法

package cn.joe;

import java.util.Calendar;
import java.util.Scanner;

public class test3 {
        public static void main(String[] args) {
//                键盘输入
                Scanner sc=new Scanner(System.in);
                System.out.println("输入一个年份:");
               
//                输入一个年份int值
                int i=sc.nextInt();
               
//                新建当前日历
                Calendar c=Calendar.getInstance();
                c.set(i, 0, 1);//设置新的年 月 日
               
                //得到设置日历的
                int i1=c.get(Calendar.DAY_OF_MONTH);
                int i2=c.get(Calendar.MONTH);
               
                while(i1<=11 && i2<=31) {
                        if (c.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY) {
                                System.out.println(c.get(Calendar.MONTH)+1+"月"+c.get(Calendar.DAY_OF_MONTH)+"日");
                        }
                        c.add(Calendar.DAY_OF_YEAR,1);
                }
        }

}

---------------------------------------------------------------------------------

package cn.joe;

import java.util.Calendar;
import java.util.Scanner;

public class test4 {
        public static void main(String[] args) {
//                键盘输入
                Scanner sc=new Scanner(System.in);
                System.out.println("输入一个年份:");
               
//                输入一个年份int值
                int i=sc.nextInt();
               
//                新建当前日历
                Calendar c=Calendar.getInstance();
                c.set(i, 0, 1);//设置新的年 月 日
               
                //得到设置日历的
//                int i1=c.get(Calendar.DAY_OF_YEAR);
//                int i2=c.get(Calendar.MONTH);
                int i1=1;
               
                while(i1<=365) {
                        if (c.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY) {
                                System.out.println(c.get(Calendar.MONTH)+1+"月"+c.get(Calendar.DAY_OF_MONTH)+"日");
                        }
//                        c.add(Calendar.DAY_OF_YEAR,1);
                        i1++;
                }
        }

}

想法是这样:给出一个while中的判断条件,
1.小于等于到12月31日条件,循环中date++,怎么实现
2.固定是365天,小于等于365作为条件,date++,的实现
3.或者有更好的方法,谢谢.....

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

8 个回复

倒序浏览
本帖最后由 xiaoHei 于 2013-4-21 22:42 编辑

以下对test3的分析:
1.把 while中的  Test3 while   中的i1<=11 && i2<=31  换成  c.get(Calendar.YEAR)==i
   原因:   你每次  c.add(Calendar.DAY_OF_YEAR,1)  是指每天加1.  加到365天  年就会加1  
   所以可以通过判断年份来控制循环.
2.得到设置日历, 没用删掉
      int i1=c.get(Calendar.DAY_OF_MONTH);
      int i2=c.get(Calendar.MONTH);
   详细代码如下:
     import java.util.Calendar;
     import java.util.Scanner;
     //从键盘输入一个年份,求出这一年中所有的星期天对应的日期
     public class Demo {
        public static void main(String[] args) {
                        //键盘输入
                Scanner sc=new Scanner(System.in);
                System.out.println("输入一个年份:");  
                //输入一个年份int值
                int i=sc.nextInt();

                //新建当前日历
                Calendar c=Calendar.getInstance();
                c.set(i, 0, 1);//设置新的年 月 日

                /*
                ---------- 这个没用删掉-------------
                //得到设置日历的
                int i1=c.get(Calendar.DAY_OF_MONTH);
                int i2=c.get(Calendar.MONTH);
                */

              /*
               * ------------修改了循环条件的while循环-------------
               */
                while(c.get(Calendar.YEAR)==i) {                        
                        if (c.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY) {
                                System.out.println(c.get(Calendar.MONTH)+1+"月"+c.get(Calendar.DAY_OF_MONTH)+"日");
                        }
                        c.add(Calendar.DAY_OF_YEAR,1);
                }
        }
}



评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

回复 使用道具 举报
xiaoHei 发表于 2013-4-21 22:39
以下对test3的分析:
1.把 while中的  Test3 while   中的i1

你的第二个问题,没看明白...
回复 使用道具 举报
明早我再仔细看看
回复 使用道具 举报
xiaoHei 发表于 2013-4-21 22:40
你的第二个问题,没看明白...

谢谢回答 非常感谢
回复 使用道具 举报
曹睿翔 发表于 2013-4-22 01:21
明早我再仔细看看

不好意思啊,因为白天学习,但是帖子是前一天晚上学习过程中遇到的问题,第二天晚上才能看到,所以回复和修改"已解决"慢了点..
回复 使用道具 举报
smile_joe 发表于 2013-4-22 21:05
不好意思啊,因为白天学习,但是帖子是前一天晚上学习过程中遇到的问题,第二天晚上才能看到,所以回复和修改 ...

这样的学习方法很好,继续坚持,晚点结贴也没事
回复 使用道具 举报
xiaoHei 发表于 2013-4-21 22:39
以下对test3的分析:
1.把 while中的  Test3 while   中的i1

多了一种方法,而且是在while循环这里走了改善,非常感谢...
回复 使用道具 举报
曹睿翔 发表于 2013-4-22 21:12
这样的学习方法很好,继续坚持,晚点结贴也没事

谢谢能理解哈,保佑....:)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马