请问这个排序的小程序错在什么地方
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();
}
大家不好意思啊,不是这个错误,请忽略这个错误,我为了节省空间,把后五个删了。。。 --------------------编程问答--------------------
不好意思啊,不是这个错误,请忽略这个错误,我为了节省空间,把后五个删了。。。 --------------------编程问答--------------------
不好意思啊,不是这个错误,请忽略这个错误,我为了节省空间,把后五个删了。。。 --------------------编程问答-------------------- 一行一行代码看到头都晕,你直接把错误信息黏贴出来,这样就好分析 --------------------编程问答-------------------- 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