0

我正在使用该方法对我自己的对象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";
    }
}
4

2 回答 2

1

您的最后一个for循环不会打印数组中的最后一个元素。如果数组只有一个元素,它根本不会打印任何东西。改成:

for (int j = 0; j < thing.length; j++) //clean code uses spaces liberally :)
{
    System.out.println(thing[j]);
    newQueue.enqueue(thing[j]);
}

或(如果使用的 JDK/JRE 版本支持):

for (Print p : thing)
{
    System.out.println(p); 
    newQueue.enqueue(p);
}
于 2012-10-25T17:08:34.827 回答
-1

我希望问题是这部分代码

for(int i = 0; i <queue1.size(); i++)
{
    Print ob = queue1.dequeue();
    thing[i] = ob;
    System.out.println(thing[i]);   //printing works here
}

将以上内容替换为

for(int i = 0; !queue1.isEmpty() ; i++)
{
    Print ob = queue1.dequeue();
    thing[i] = ob;
    System.out.println(thing[i]);   //printing works here
}
于 2012-10-25T17:11:06.297 回答