黑马程序员技术交流社区

标题: 入学测试题库里面的一道关于日历的编程题 [打印本页]

作者: 1018chenhaiyang    时间: 2015-12-4 21:57
标题: 入学测试题库里面的一道关于日历的编程题
入学测试题库里的一道题,很多大神用的是底层写法实现的,感觉好厉害。我只会用查API的办法做出来了
  1. import java.util.Calendar;
  2. import java.util.Scanner;

  3. /**
  4. * 9、 编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这
  5. * 一天是星期几,并且计算出是一年中的第几天。
  6. * @author Administrator
  7. *
  8. */
  9. public class Demo {
  10.         public static void main(String[] args) throws Exception {
  11.                 //以下代码表示把屏幕录入的字符串按照sdf的格式解析成Date
  12.                 Scanner sc = new Scanner(System.in);
  13.                 System.out.println("请按照yyyy-MM-dd格式输入一个日期:");
  14.                 String str = sc.next();
  15.                
  16.                 //日历里面的set的方法只接受int类型,这里用正则表达式的字符串切割用,并分别转换成三个int类型
  17.                 String[] Arr = str.split("-");
  18.                 int ii =Integer.parseInt(Arr[0]);
  19.                 int jj =Integer.parseInt(Arr[1]);
  20.                 int kk =Integer.parseInt(Arr[2]);
  21.                
  22.                 Calendar  c = Calendar.getInstance();//实例化一个日期类对象
  23.                 c.set(ii,jj-1,kk);//因为罗马日历从0月算起,所以月份这里要减一
  24.                int day = c.get(Calendar.DAY_OF_YEAR);
  25.                int week = c.get(Calendar.WEEK_OF_YEAR);
  26.                System.out.println(day);
  27.                System.out.println(week);
  28.         }
  29. }
复制代码




作者: xinxiangchen    时间: 2015-12-4 22:14
DataFormat可以直接设置日期格式
作者: 1018chenhaiyang    时间: 2015-12-5 10:40
xinxiangchen 发表于 2015-12-4 22:14
DataFormat可以直接设置日期格式

好像没用到dateFormat
作者: 再续啸傲    时间: 2015-12-5 12:36
get and look look
作者: xinxiangchen    时间: 2015-12-5 15:26
再续啸傲 发表于 2015-12-5 12:36
get and look look

我也有这道题
public class Test9 {
        public  static  void main (String[] args){
                countDay();
        }
        public static void countDay() {
                System.out.println("请输入一个日期:");
                try{
                        String data1=new BufferedReader(new InputStreamReader(System.in)).readLine(); //输入字符串
                        DateFormat df=new SimpleDateFormat("yyyy-MM-dd");//格式化日期格式
                        Date date2=df.parse(data1);        //将字符data1转为日期格式
                        Calendar c=Calendar.getInstance();//新建日历类
                        c.setTime(date2);//设置日期
                        System.out.println("这是"+weekDay(c));
                        System.out.println("一年中的第"+c.get(Calendar.DAY_OF_YEAR)+"天");
                }
                catch(Exception e){
                        System.out.println("输入不正确,请重新输入:");
                        countDay();
                }
        }
        public static String weekDay(Calendar c){//将Calendar类获得的日期值对应中文值
                String [] week={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
                return week[c.get(Calendar.DAY_OF_WEEK)-1];
        }
               
}

作者: 请叫我一声辉哥    时间: 2016-4-24 10:17
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2