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ループでは、配列の最後の要素は出力されません。配列に要素が1つしかない場合、何も出力されません。への変更:

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 に答える