public class Test3{
public static void main(String args[]){ Date date2[];
date2=new Date[5];
date2[0]=new Date(2013,1,4);
date2[1]=new Date(2013,2,2);
date2[2]=new Date(2013,1,3);
date2[3]=new Date(2013,1,1);
date2[4]=new Date(2013,2,5);
public  int  k(){//能告诉我这个为什么写在这边就是错的???
return 1;
}


compare3(date2);

for(int i=0;i<date2.length;i++){
System.out.println(date2[i]);
}
}
//这个为什么要static
public static Date[] compare3(Date[] a){
Date temp;
for(int i=0;i<a.length;i++)
for(int j=i+1;j<a.length;j++){
if(a[i].compare(a[j])==1){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
return a;
}}
class Date{
int year,month,day;
Date(int year,int month,int day){
this.year=year;
this.month=month;
this.day=day;
}
}

解决方案 »

  1.   

    第一处:不能在方法内再声明方法第二次:因为你要在main方法中不经过new Test3对象  直接调用compare3 所以需要用static 。
    静态方法中只能引用静态变量和调用静态方法
      

  2.   

    你把
    public  int  k(){//能告诉我这个为什么写在这边就是错的???
    return 1;
    }
    写到了main方法里面不能错么?
      

  3.   

    Main方法也是一个方法,方法之间是不能嵌套的
      

  4.   

    1.方法不可以嵌套定义,Java中有这个规定。2.假设a()和b()两个方法定义在Test类中,静态方法a()要调用方法b(),要看b()是不是静态的。
    如果b()不是静态的,可以这样调用:new Test().b();
    如果b()是静态的,可以这样调用:Test.b();。由于a()和b()在同一个类中定义,调用时可不用写类名,直接写成b();也可以。
      

  5.   

    问题1:你把方法定义写在了方法里,这是不允许的
    问题2:不是一定要定义成static的,如果你想要在main方法里直接调用的话,需要定义成static的,因为mian是静态的
      

  6.   

    方法不可以嵌套定义,Java中有这个规定
      

  7.   

    1,方法嵌套了2,定义static 可以使类级别的调用了,不是对象级别调用了