黑马程序员技术交流社区

标题: 想输出星期几,为什么DAY_OF_WEEK会自动变成DAY_OF_WEEK_IN_MONTH? [打印本页]

作者: 陈兆辉    时间: 2014-9-21 23:41
标题: 想输出星期几,为什么DAY_OF_WEEK会自动变成DAY_OF_WEEK_IN_MONTH?
本帖最后由 陈兆辉 于 2014-9-22 22:21 编辑

做测试题,需要输出星期几,但是测试的时候发现DAY_OF_WEEK会自动变成DAY_OF_WEEK_IN_MONTH,返回的字段值总是多2。哪位大神告诉我这是怎么一回事?特么蛋都碎了!
  1. package com.itheima;

  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.util.Calendar;

  6. /*        第9题:
  7.         编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天。*/
  8. public class Test9 {
  9.         
  10.         public static void main(String[] args) throws IOException {
  11.                 //定义键盘读取流,循环读取
  12.                 BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
  13.                 String line = null;
  14.                 while((line = bufr.readLine())!=null){  //为了代码简便,这里就不进行处理了。
  15.                         //输入over,程序结束
  16.                         if("over".equals(line)||line==""){
  17.                                 System.out.println("谢谢使用,再见!");
  18.                                 break;
  19.                         }
  20.                         //输入的不符合规范,程序结束。
  21.                         if(line.matches("[012]\\w{3}-[01]\\w-[012]\\w")){
  22.                                 System.out.println("您的输入有误,请重新输入!");
  23.                         }
  24.                         //用"-"切割,得到日期的字段的数组
  25.                         String[] field = line.split("-");
  26.                         //建立日历对象,并且根据每个字符串字段设置日历的日期。
  27.                         Calendar calendar = Calendar.getInstance();
  28.                         calendar.set(Integer.parseInt(field[0]),
  29.                                         Integer.parseInt(field[1]),
  30.                                         Integer.parseInt(field[2]));
  31.                         //使用查表法,建立星期表
  32.                         String[] weeks = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
  33.                         //输出结果
  34.                         System.out.println(field[0]+"年"+field[1]+"月"+field[2]+"日:"
  35.                         +weeks[calendar.get(Calendar.DAY_OF_WEEK)]
  36.                         +",一年中的第"+calendar.get(Calendar.DAY_OF_YEAR)+"天");
  37.                 }
  38.         }
  39. }
复制代码



作者: 陈兆辉    时间: 2014-9-21 23:43
坐等大神回复我啊!
作者: 陈兆辉    时间: 2014-9-21 23:54
亲们,谁帮我看一下呗?万分感谢啊!
作者: 陈兆辉    时间: 2014-9-22 09:22
为什么没人理我啊?自己顶!
作者: 陈兆辉    时间: 2014-9-22 09:50
持续顶贴中.
作者: 陈兆辉    时间: 2014-9-22 15:39
没人知道么?
作者: 陈兆辉    时间: 2014-9-22 16:22
真的没一个人知道么?我等着交测试题呢,等一天了,还是没结果,有点急啊!
作者: 陈兆辉    时间: 2014-9-22 20:54
顶之!!!!!
作者: careit    时间: 2014-9-22 22:08
  1. calendar.set(Integer.parseInt(field[0]),
  2.                                         Integer.parseInt(field[1]),//次数参数传递错了,改为如下
  3.                                         Integer.parseInt(field[2]));
复制代码
  1. calendar.set(Integer.parseInt(field[0]),
  2. Integer.parseInt(field[1])-1,//次数参数传递错了
  3. Integer.parseInt(field[2]));
复制代码

使用时要看清参数的含义,不要理所当然喽
setpublic final void set(int year,                      int month,                      int date)设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。保留其他日历字段以前的值。如果不需要这样做,则先调用 clear()
参数:year - 用来设置 YEAR 日历字段的值。month - 用来设置 MONTH 日历字段的值。Month 值是基于 0 的。例如,0 表示 January。date - 用来设置 DAY_OF_MONTH 日历字段的值。另请参见:set(int,int), set(int,int,int,int,int), set(int,int,int,int,int,int)

作者: 陈兆辉    时间: 2014-9-22 22:20
careit 发表于 2014-9-22 22:08
使用时要看清参数的含义,不要理所当然喽
setpublic final void set(int year,                      int  ...

谢谢谢谢,是我粗心了,月份都是错的。




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