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之后,输出就不对了