0

ユーザーに単語を入力するように要求し、プログラムが各文字をキューに保存するプログラムのキューに問題があります。キューの内容を出力すると、文字がすべてごちゃ混ぜになっています。これはほとんどの単語に起こります。たとえば、「racecar」と入力すると、キューは [r, a, c, e, c, a, r] ではなく [a, c, a, r, e, c, r] として表示されます。なぜこれが起こるのか分かりますか?

import java.util.Scanner;
import java.util.*;

public class WordQueue
{
    public static void main(String arg[])
    {
        while(true){
            String phrase;
            int phraselength;
            PriorityQueue queue = new PriorityQueue();
            Scanner sc = new Scanner(System.in);
            System.out.println("Enter a word/phrase");
            phrase = sc.nextLine();
            phrase = phrase.replaceAll("\\p{Punct}|\\d",""); //remove all punctuation
            phraselength = phrase.length();                  //get length of phrase
            System.out.println(phraselength);

            for(int x = 0; x <= phraselength-1; x++)         //store each letter 
            {                                                //in queue
                queue.offer(phrase.charAt(x));    
            }

            System.out.println("");

                System.out.printf("%s ", queue);             //output queue

        }
    }
}
4

2 に答える 2

1

PriorityQueue の要素は、最小の要素である head を除いて、特定の順序に従いません。特に、反復順序は定義されていません。removeキューから継続的 に取得すると、要素が自然な順序で取得されます (この例ではアルファベット順)。

いずれにせよ、それはおそらくあなたが必要とするものではありません。代わりにスタックを使用してみませんか?

于 2013-09-24T20:36:47.483 に答える
0

PriorityQueueFIFO キューではありません。最も優先度の高い要素が常にキューの先頭になるように要素を並べ替えます。を使用しLinkedListます。

于 2013-09-24T20:35:07.767 に答える