ClassCastException с сопоставимымJAVA

Программисты JAVA общаются здесь
Anonymous
ClassCastException с сопоставимым

Сообщение Anonymous »

Я делаю школьный проект, в котором мы должны реализовать алгоритм A* для решения проблемы с 8 кулаками. При создании узла и добавлении его в очередь, проблем нет, но когда я создаю второй, и пытаюсь добавить его в очередь, он не может сравнить их обоих, чтобы проверить, что имеет самую низкую f-cost. < /P>
private class Node implements Comparable{
private Node parent;
private int distance;
private int moves;
private Board board;

public Node(Node parent, Board board, int moves) {
this.parent = parent;
this.board = board;
this.moves = moves;
distance = board.manhattan();
}

@Override
public int compareTo(Node node) {
return this.moves + this.distance - node.moves - node.distance;
}
}
< /code>
Это класс, в котором я создаю свой узел.import java.util.PriorityQueue;
import org.junit.Test;

public class UnitTests {
private PriorityQueue closedPQ = new PriorityQueue();
@Test
public void pqTest() {
int N = 3, counter = 1;
int[][] tiles = new int[N][N];

for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
tiles[j] = counter++;
}
}
tiles[2][2] = 0;
tiles[1][1] = 6;
tiles[1][2] = 5;

Board initial = new Board(tiles);

tiles[1][1] = 5;
tiles[1][2] = 6;

Board initial2 = new Board(tiles);

System.out.println(initial.manhattan());
System.out.println(initial2.manhattan());

closedPQ.add(new Node(null, initial, 0));
closedPQ.add(new Node(null, initial2, 0));

Node n = closedPQ.remove();
System.out.println(n.distance);
}
}
< /code>
Сначала вы просто создаете новую доску, а затем измените несколько чисел, чтобы получить разные затраты. Ошибка, которую я получаю, - это когда я пытаюсь добавить второй узел в PQ. У кого -нибудь есть представление о том, как это исправить? Я ожидаю, что узел с наименьшей стоимостью F возвращается мне при операции удаления. Это второй узел, который я добавляю в очередь, потому что его показатель манхаттена равен 0, в то время как у платы Firsts Node есть манхаттен-оценка 0. java.lang.comparable

at hava.util.priorityqueue.siftupcomparable (неизвестный источник)

at java.util.priorityqueue.siftup (неизвестный источник)

at java.util.priorityque. java.util.priorityqueue.add (неизвестный источник)

at gna.unittests.pqtest (unittests.java:100) < /p>
< /blockquote>

Подробнее здесь: https://stackoverflow.com/questions/366 ... comparable

Вернуться в «JAVA»