三点水不是水 2019-12-13 18:48 采纳率: 100%
浏览 254

MyDate类编写时遇到了问题

Mydate类里要求实现before和after函数,具体问题是

public MyDate after(int n){
        MyDate e=new MyDate(c.get(Calendar.YEAR),c.get(Calendar.MONTH)-1,c.get(Calendar.DAY_OF_MONTH) );
        e.c.add(Calendar.DAY_OF_MONTH, n);
        return e;

    }

在编写这个函数时,不知道是不是这个函数用了Calendar的get方法让我后面的测试出现了编译错误

public class Main {

public static void main(String[] args) {
    int  selected;
    Scanner  in=new  Scanner(System.in);
    selected=in.nextInt();
    MyDate  md=new  MyDate(2000,10,10);
    switch(selected){
    case  1:
            System.out.println(md);
            break;
    case  2:
            md=new  MyDate("2010-10-10");
            System.out.println(md);
            break;
    case  3:
            md=new  MyDate("2010/10/10","yyyy/MM/dd");
            System.out.println(md);
            break;
    case  4:
            System.out.println(md.after(8));
            break;
    case  5:
            System.out.println(md.before(20));
            break;
    case  6:
            System.out.println(md.getCalender().get(Calendar.YEAR));
            break;
    case  7:
            md.setPattern("yyyy/MM/dd");
            System.out.println(md);
    }
    in.close();
} 

}
这个是题目的主函数

MyDate类的代码如下:

public class MyDate{
    private Calendar c=Calendar.getInstance();
    private String Pattern="yyyy-MM-dd";
    public MyDate() {
        super();
    }
    public MyDate(int y,int m,int d) {
        c.set(Calendar.YEAR, y);
        c.set(Calendar.MONTH, m);
        c.set(Calendar.DAY_OF_MONTH, d);

    }
    public MyDate(String source) {
        SimpleDateFormat sdf=new SimpleDateFormat(Pattern);
        try {
            c.setTime(sdf.parse(source));
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public MyDate(String source,String Pattern) {
        this.Pattern=Pattern;
        SimpleDateFormat sdf=new SimpleDateFormat(Pattern);
        try {
            c.setTime(sdf.parse(source));
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
    public MyDate after(int n){
        MyDate e=new MyDate(c.getInstance().YEAR,c.getInstance().MONTH,c.getInstance().DATE );
        e.c.add(Calendar.DAY_OF_MONTH, n);
        return e;

    }
    public MyDate before(int n){
        MyDate e=new MyDate(c.get(Calendar.YEAR),c.get(Calendar.MONTH)-1,c.get(Calendar.DAY_OF_MONTH));
        e.c.add(Calendar.DAY_OF_MONTH,-n);
        return e;
    }
    public Date getDate(){
        return c.getTime();

    }
    public Calendar getCalender(){
        return c;

    }
    public long getLong(){
        return c.getTimeInMillis();

    }
    public void setPattern(String pattern) {
        this.Pattern = pattern;
    }
    @Override
    public String toString() {
        SimpleDateFormat sdf=new SimpleDateFormat(Pattern);
        return sdf.format(c.getTime());
    }

}

想知道为什么会出现编译错误,望大佬帮忙指点

我尝试把getCalendar改成getInstance之后,输出就不对了

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-12-13 22:24
    关注

    getCalendar() 换成 getInstance()

    评论

报告相同问题?

悬赏问题

  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥15 Oracle触发器记录修改前后的字段值
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题