Осторожно, у меня только один семестр под моим поясом. Попросив аналогичный вопрос только перенаправить на here, честно говоря, я не мог понять большую часть того, что было сказано, и это не было гигантской помощью.PriorityQueue.siftUpComparable? Что я здесь делаю неправильно?
Я сделал свой код немного более полно, как к тому, что происходит (я консолидированы все в основной метод. Что я думаю, что должно помочь немного.
Во всяком случае я получаю эту ошибку
Exception in thread "main" java.lang.ClassCastException: lab13d.Card cannot be cast to java.lang.Comparable
at java.util.PriorityQueue.siftUpComparable(PriorityQueue.java:652)
at java.util.PriorityQueue.siftUp(PriorityQueue.java:647)
at java.util.PriorityQueue.offer(PriorityQueue.java:344)
at java.util.PriorityQueue.add(PriorityQueue.java:321)
at lab13d.Lab13d.main(Lab13d.java:53)
Java Result: 1
..
И не могу сделать головы, ни хвосты этого я никогда не использовал очереди, прежде чем так что это действительно очень ново для меня
Вот мой код:
public static void main(String[] args)
{
int players = 2;
Card[] pile;
int MAX_CARDS = 52;
int MAX_SUITS = 4;
int MAX_RANKS = 14;
pile = new Card[MAX_CARDS];
int index = 0;
for(int suit = 1; suit <= MAX_SUITS; suit++){
for(int rank = 2; rank <= MAX_RANKS; rank++, index++){
Card c = new Card(suit, rank);
pile[index] = c;
}
}
PriorityQueue<Card>[] hand = new PriorityQueue[players + 1];
for(int i = 0; i < players + 1; i++){
hand[i] = new PriorityQueue();
}
for(int i = 0; i < players; i++){
for(int j = i; j < pile.length; j+= players){
hand[i].add(pile[j]);
}
}
int leftOverCards = pile.length - (pile.length % players);
for(int i = leftOverCards; i < pile.length; i++){
hand[players].add(pile[i]);
}
System.out.printf("%s", hand[0]);
}
ответ по ссылке, которую они отправили, объясняет это очень хорошо; найти терпение, чтобы прочитать его через (заменив слово TreeSet на PriorityQueue всякий раз, когда он используется) –