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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Backing 中级黑马   /  2014-2-18 22:00  /  4200 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这个在我的eclipse里面,输出2012-12-12输出的DAY_OF_MONTH和DAY_OF_YEAR是一样的,这是为什么?请高手指教
  1. import java.io.BufferedInputStream;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.util.GregorianCalendar;

  5. public class Test9 {

  6.         public static void main(String[] args) throws IOException {
  7.                 // TODO Auto-generated method stub
  8.                 byte[] iarr = new byte[10];//建立byte数组用于存放system.in读入的数据。
  9.                 InputStream s = System.in;//建立相对应的system.in输入流。
  10.                 BufferedInputStream  sbf = new BufferedInputStream(s);
  11.                 sbf.read(iarr, 0, 10);//读取数据,并存入iarr中。
  12.                 String sdate = new String(iarr);
  13.                
  14.                 String[] sarr = sdate.split("-");//切割输入的“yyyy-MM-dd”格式日期。
  15.                
  16.                 int year = new Integer(sarr[0]);
  17.                 int month = new Integer(sarr[1]);
  18.                 int date = new Integer(sarr[2]);
  19.                
  20.                 GregorianCalendar gc = new GregorianCalendar(year,month,date);//建立相关日历。
  21.                 System.out.println(gc.get(GregorianCalendar.DAY_OF_MONTH));//输出这一天是这个月的第几天。
  22.                 System.out.println(gc.get(GregorianCalendar.DAY_OF_YEAR));//输出这一天是一年中的第几天
  23.                
  24.         }

  25. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

5 个回复

倒序浏览
楼主是做入学考试题?
这个代码肯定是不行的,我输入2013-1-2都会报数据格式化异常,
其实想要获取输入的日期是一年中的第几天或者是一个月中的第几天或者是一个星期中的第几天完全没有必要用到GregorianCalendar这个类,
当你输入2012-12-12时,这个类会设置时间是2013年1月12日,因为它认定的月份是0-11,具体的需要楼主查文档,里面有很详细的解释
,建议入学测试自己动脑筋,这题目最好先判断输入的日期是否合法,比如2014-2-29是不合法的,而2012-2-29是合理的,我当时做这题老师给的是满分,
楼主自己动脑吧,加油

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
这道题的题目是什么
回复 使用道具 举报
asvsass 发表于 2014-2-19 00:13
这道题的题目是什么

题目是: 编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天。
回复 使用道具 举报
panzhenglian 发表于 2014-2-18 23:54
楼主是做入学考试题?
这个代码肯定是不行的,我输入2013-1-2都会报数据格式化异常,
其实想要获取输入的日期 ...

ok,谢了。
回复 使用道具 举报
本帖最后由 asvsass 于 2014-2-19 22:50 编辑

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Test {
    public static void main (String args[]) throws IOException {
   
                    
            BufferedReader br=
                    new BufferedReader(new InputStreamReader(System.in));
            BufferedWriter bw=
                    new BufferedWriter(new OutputStreamWriter(System.out));
            String line=null;
            while (true){
                    line=br.readLine();
            
            
            String[] a=line.split("-");
            
            Integer i=Integer.parseInt(a[0]);
            Integer i2=Integer.parseInt(a[1]);
            Integer i3=Integer.parseInt(a[2]);
            
            Calendar c=Calendar.getInstance();
            
            c.set(i,i2-1,i3);
                            System.out.println(c.get(Calendar.DAY_OF_WEEK)-1);
                            System.out.println(c.get(Calendar.DAY_OF_YEAR));
                    
                    if("over".equals(line))
                            break;
            }
                    bw.write(line);
                    bw.newLine();
                    bw.flush();
                    
            }
            
    }
这个代码你看看 我只是做个大概
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马