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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 陈兆辉 于 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. }
复制代码


9 个回复

倒序浏览
坐等大神回复我啊!
回复 使用道具 举报
亲们,谁帮我看一下呗?万分感谢啊!
回复 使用道具 举报
为什么没人理我啊?自己顶!
回复 使用道具 举报
持续顶贴中.
回复 使用道具 举报
没人知道么?
回复 使用道具 举报
真的没一个人知道么?我等着交测试题呢,等一天了,还是没结果,有点急啊!
回复 使用道具 举报
顶之!!!!!
回复 使用道具 举报
careit 中级黑马 2014-9-22 22:08:02
9#
  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)
回复 使用道具 举报
careit 发表于 2014-9-22 22:08
使用时要看清参数的含义,不要理所当然喽
setpublic final void set(int year,                      int  ...

谢谢谢谢,是我粗心了,月份都是错的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马