java程序问题,程序如下,报的错误是什么意思呢

packageentity;classDate{intyear,month,day;Date(inty,intm,intd){year=y;month=m;day=d;}... package entity;
class Date{
int year,month,day;
Date(int y, int m, int d){
year=y;
month=m;
day=d;
}

public int compare(Date date){
return year > date.year ? 1
: year < date.year ? -1
: month > date.month ? 1
: month < date.month ? -1
: day > date.day ? 1
: day < date.day ? -1
: 0;
}
public String toString(){
return "Year:Month:Day--"+year+"-"+month+"-"+day;
}
}
public class TestDateSort {
public static void main(String[] args){
Date[] days = new Date[5];
days[0]= new Date(2014,8,15);
days[1]= new Date(2013,5,25);
days[2]= new Date(2012,3,12);
days[3]= new Date(2014,9,18);
days[4]= new Date(2011,11,5);
bubbleSort(days);
for(int i =0; i<days.length;i++)
{
System.out.println(days[i]);
}
}
public static Date[] bubbleSort(Date [] a){
int len = a.length;
for(int i = len-1;i>=1;i--){
for(int j = 0;j<=i-1; j++){
if(a[j].compare(a[j-1])>0){
Date temp = a[j];
a[i]=a[j+1];
a[j+1]=temp;
}
}
}
return a;
}
}
这个才是报错的东西
展开
 我来答
dagewxw
推荐于2016-09-01 · TA获得超过5929个赞
知道大有可为答主
回答量:3523
采纳率:67%
帮助的人:988万
展开全部
package entity;

class Date{

    int year,month,day;

    Date(int y, int m, int d){

    year=y;

    month=m;

    day=d;

    }


    public int compare(Date date){

    return year > date.year ? 1

    : year < date.year ? -1

    : month > date.month ? 1

    : month < date.month ? -1

    : day > date.day ? 1

    : day < date.day ? -1

    :                  0;

    }

    public String toString(){

    return "Year:Month:Day--"+year+"-"+month+"-"+day; 

    }

}

public class TestDateSort {

    public static void main(String[] args){

        Date[] days = new Date[5];

        days[0]= new Date(2014,8,15);

        days[1]= new Date(2013,5,25);

        days[2]= new Date(2012,3,12);

        days[3]= new Date(2014,9,18);

        days[4]= new Date(2011,11,5);

        bubbleSort(days);

        for(int i =0; i<days.length;i++)

        {

        System.out.println(days[i]);

        }

    }

   public static Date[] bubbleSort(Date [] a){

    int len = a.length;

    for(int i = len-1;i>=1;i--){

        for(int j = 0;j<=i-1; j++){

            if(a[j].compare(a[j+1])>0){ //a[j-1]改成a[j+1],另外,你下面的图片,应该是贴错了

            Date temp = a[j];

            a[i]=a[j+1];

            a[j+1]=temp;

            }

        }

    }

    return a;

  }

}
追问
按你说的改了,没报错可是运行结果却是
Year:Month:Day--2014-8-15
Year:Month:Day--2014-8-15
Year:Month:Day--2014-8-15
Year:Month:Day--2014-9-18
Year:Month:Day--2014-9-18
追答
再往下a[i]=a[j+1];换成 a[j] = a[j+1]
这种语义错误,得自己找。
zhongtyler
2014-09-24 · TA获得超过4408个赞
知道大有可为答主
回答量:4384
采纳率:79%
帮助的人:940万
展开全部
你应该建个目录entity,把class复制到目录里,然后在上一级目录,运行java entity.TestDataSort
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
anglewang98
2014-09-24 · TA获得超过535个赞
知道小有建树答主
回答量:420
采纳率:80%
帮助的人:285万
展开全部
环境变量中定义了classpath没有?
你的TestDateSort.class文件在哪里?
都设定正常的话,执行java entity.TestDateSort
而不是java TestDateSort因为你的package是entity
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhao_my_love
2014-09-24
知道答主
回答量:53
采纳率:100%
帮助的人:12.1万
展开全部
你看看javac编译之后的class文件在哪个路径
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
c412081157
2014-09-24 · 超过51用户采纳过TA的回答
知道小有建树答主
回答量:184
采纳率:100%
帮助的人:66万
展开全部
这个程序报的是数据越界
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at cwl.TestDateSort.bubbleSort(TestDateSort.java:79)
at cwl.TestDateSort.main(TestDateSort.java:59)
这个在你TestDateSort.Java 59行
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式