当前位置:编程学习 > JAVA >>

请问这个排序的小程序错在什么地方

public class Test8
{
   public static void main(String[] args)
   {
        Date[] dates=new Date[10];
        dates[0]=new Date(2013,1,6);
        dates[1]=new Date(2012,1,6);
        dates[2]=new Date(2011,1,6);
        dates[3]=new Date(2013,2,6);
        dates[4]=new Date(2013,3,6);
        print(dates);
        sort(dates);
        print(dates);
   }
   public static void print(Date[] dates)
   {
        for (int i=0; i<dates.length; i++)
        { 
            System.out.println(dates[i].year+","+dates[i].month+","+dates[i].day+";");
        }
        System.out.println();
   }
   public static void sort(Date[] dates)
   {
        int k;
        Date temp;
        for (int i=0; i<dates.length-1; i++)
        {
        k=i;
                temp=dates[i];
                for (int j=i+1; j<dates.length; j++)
                {
                        if (dates[i].compare(dates[j])==1)
                        {
                                k=j;
                                temp=dates[j];
                        }
                }
                dates[k]=dates[i];
                dates[i]=temp;
        }
   }
}

class Date
{
   int year,month,day;
   public Date(int year,int month,int day)
   {
        this.year=year;
        this.month=month;
        this.day=day;
   }
   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;
   }
}
错在什么地方,求别吐槽我渣一般的编程能力 --------------------编程问答-------------------- 改成 Date[] dates = new Date[5];
原来的写法数组中5~9的元素没有初始化。
--------------------编程问答-------------------- 数组定义空间错误, Date[] dates=new Date[10]; 改成  Date[] dates=new Date[5];  --------------------编程问答-------------------- 把10改成5,或者再往数字里加五个Date对象,或者像这样

public static void print(Date[] dates) {
for (int i = 0; i < dates.length; i++) {
if(dates[i] != null){
System.out.println(dates[i].year + "," + dates[i].month + ","
+ dates[i].day + ";");
}
}
System.out.println();
}
--------------------编程问答--------------------
引用 1 楼 ghostkngiht 的回复:
改成 Date[] dates = new Date[5];
原来的写法数组中5~9的元素没有初始化。

大家不好意思啊,不是这个错误,请忽略这个错误,我为了节省空间,把后五个删了。。。 --------------------编程问答--------------------
引用 2 楼 javaclassj2ee 的回复:
数组定义空间错误, Date[] dates=new Date[10]; 改成  Date[] dates=new Date[5]; 

不好意思啊,不是这个错误,请忽略这个错误,我为了节省空间,把后五个删了。。。 --------------------编程问答--------------------
引用 3 楼 longtian1213 的回复:
把10改成5,或者再往数字里加五个Date对象,或者像这样

public static void print(Date[] dates) {
for (int i = 0; i < dates.length; i++) {
if(dates[i] != null){
System.out.println(dates[i].year + "," + dates[i].month + ","
+ dates[i].day + ";");
}
}
System.out.println();
}


不好意思啊,不是这个错误,请忽略这个错误,我为了节省空间,把后五个删了。。。 --------------------编程问答-------------------- 一行一行代码看到头都晕,你直接把错误信息黏贴出来,这样就好分析 --------------------编程问答-------------------- 2013,1,6;
2012,1,6;
2011,1,6;
2013,2,6;
2013,3,6;

2011,1,6;
2012,1,6;
2013,1,6;
2013,2,6;
2013,3,6;


有什么问题吗? --------------------编程问答-------------------- 你想做什么? --------------------编程问答-------------------- 感觉这个代码没有问题啊。。。 --------------------编程问答-------------------- 作为新手一枚,我倒腾了半天也没出结果,可能是你的思路不对,我在CSDN上面搜了有其他的解决思路。 --------------------编程问答--------------------
if (dates[i].compare(dates[j])==1)

改为
if (temp.compare(dates[j])==1)
--------------------编程问答-------------------- 编译器报错还是运行出错,附上错误提示额,还有对象排序建议你用容器做,对象数组做比较排序太麻烦
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,