三点水不是水 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()

    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料