사용자가 단어를 입력하도록 요청하고 프로그램이 각 문자를 대기열에 저장하는 프로그램의 대기열에 문제가 있습니다. 대기열의 내용을 출력 할 때 글자가 모두 뒤섞입니다. 이것은 대부분의 단어에 발생합니다. 예를 들어 "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
}
}
}
[PriorityQueue]에 대한 [Javadoc] (http://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html)에서 우선 순위 큐의 요소는 다음에 따라 정렬됩니다. 그들의 자연 순서. – GriffeyDog