-1

ユーザーがプライオリティ キューを使用して入力した正の整数のシーケンスを並べ替えようとしています。何かを実装する方法がわからないので、誰かが助けてくれるかどうか疑問に思っています.これは私がこれまでに持っているものです:

import java.util.PriorityQueue;
import java.util.Scanner;

    public class priorityquene implements Comparable<priorityquene> 
    {
        final int priority;
        final String name;

        public priorityquene(int p, String n) 
        {
            priority = p;
            name = n;
        }

        public String toString() 
        {
            return priority + ", " + name;
        }

        public int compareTo(priorityquene other) 
        {
            return priority < other.priority ? -1 : priority > other.priority ? 1 : 0;
        }

        public static void main(String[] args) 
        {
            PriorityQueue<priorityquene> pq = new PriorityQueue<priorityquene>();
            Scanner input = new Scanner(System.in); 
            System.out.println("Please enter a positive integer: ");
            int num1 = input.nextInt();
            pq.add(new priorityquene(num1, " "));
            System.out.println("Please enter a positive integer: ");
            int num2 = input.nextInt();
            pq.add(new priorityquene(num2, " "));
            System.out.println("Please enter a positive integer: ");
            int num3 = input.nextInt();
            pq.add(new priorityquene(num3, " "));
            System.out.println("Please enter a positive integer: ");
            int num4 = input.nextInt();
            pq.add(new priorityquene(num4, " "));
            System.out.println("Please enter a positive integer: ");
            int num5 = input.nextInt();
            pq.add(new priorityquene(num5, " "));

            while (!pq.isEmpty())
                System.out.println(pq.remove());
        }
    }

実装方法がわからないものがあります。無制限の入力を受け入れるように設定するにはどうすればよいですか。また、特定の整数が入力されたときに、たとえば 0; 0 より前の入力を最小から最大の順にソートし始めますか?

4

3 に答える 3

0

return独自のメソッドで , off を使用して「永遠に」ループを使用します。

private static void enqueueNumbersFromScanner(Scanner input, PriorityQueue pq) {
    for (;;) {  
        System.out.println("Please enter a positive integer: ");
        int response = input.nextInt();
        if (response == 0) {
            return;
        }
        pq.add(new priorityquene(response, " "));
    }
}

次に、あなたの中にmain、ただ書いてください

enqueueNumbersFromScanner(input, pq);
于 2013-11-12T01:27:34.673 に答える
0

無制限の入力を受け入れるように設定するにはどうすればよいですか

ループで。

特定の整数が入力された場合は、0 とします。0 より前の入力を最小から最大の順にソートし始めますか?

プライオリティ キューはそのようには機能しません。何かを追加するたびに部分的な順序付けを行い、何かを削除するたびにそれを繰り返します。PQを表示したい場合は、0 が入力されたときに最初のエントリがある間、最初のエントリを繰り返し削除して印刷します。

priorityqueue使用していることを考えると、独自のクラスに名前を付けるべきではありませんjava.util.PriorityQueue.。混乱を招くだけです。

于 2013-11-12T00:37:04.653 に答える