【发布时间】:2012-10-25 16:59:51
【问题描述】:
我正在使用Arrays.sort 方法对我自己的Comparable 对象数组进行排序。在我使用排序之前,数组已满,但在我对数组进行排序并将其打印到系统之后,没有任何东西打印出来。编辑。该数组根本不打印任何内容。不是空行,什么都没有。
这是我使用sort的方法的代码:
public LinkedQueue<Print> arraySort(LinkedQueue<Print> queue1)
{
Print[] thing = new Print[queue1.size()];
LinkedQueue<Print> newQueue = new LinkedQueue<Print>();
for(int i = 0; i <queue1.size(); i++)
{
Print ob = queue1.dequeue();
thing[i] = ob;
System.out.println(thing[i]); //printing works here
}
Arrays.sort(thing);
for(int j = 0;j<thing.length-1;j++)
{
System.out.println(thing[j]); //printing does not work here
newQueue.enqueue(thing[j]);
}
return newQueue;
}
这里是Comparable 对象的类Print。
public class Print implements Comparable<Print>
{
private String name;
private int numPages,arrivalTime,startTime,endTime;
public Print(String n, int p, int time, int sTime, int eTime)
{
name = n;
numPages = p;
arrivalTime = time;
startTime = sTime;
endTime = eTime;
}
public int getPages()
{
return numPages;
}
public int compareTo(Print other)
{
if(this.getPages()<other.getPages())
return -1;
else if(this.getPages()>other.getPages())
return 1;
else
return 0;
}
public String toString()
{
return name+"("+numPages+" pages) - printed "+startTime+"-"+endTime+" minutes";
}
}
【问题讨论】:
-
为什么不打印出最后一个元素?
for(int j = 0;j<thing.length-1;j++)通常是for(int j = 0;j<thing.length;j++)或只是for (Print p : thing) -
另外,“此处无法打印”究竟是什么意思? anything 正在打印吗?错误的值?
-
您可以使用
Arrays.toString(thing)打印,因为您已经在Print类中覆盖了toString。并准确告诉我们输出是什么。 -
@JonSkeet “在我对数组进行排序并将其打印到系统后没有任何内容打印出来。”
-
另外,您可以将
compareTo()实现替换为return this.numPages - other.numPages;