【发布时间】:2017-11-13 11:47:44
【问题描述】:
我一直在创建一个图表来运行我的 A* 实现,但我似乎在查找节点的邻居时遇到了某个错误。我的逻辑是,在表示邻接矩阵的 2D ArrayList 中,我在列表 1 中有:节点 a b c d,在列表 2 中有节点 a b c d,它们相遇的索引应该有一个不是 0 的值,以表明存在边缘。这就是我在这里尝试做的事情:
public List<Node> neighbours(Node a){
List<Node> neighbours = new ArrayList<Node>();
for(int i = 0; i < nodes.size() - 1; i ++){
int n = matrix.get(matrix.indexOf(a)).get(i);
if (n != 0){
neighbours.add(nodes.get(i));
}
}
return neighbours;
}
但是我得到了一个很好的Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1 错误,我已经盯着它看了 30 分钟,但我不知道这个 -1 是从哪里来的。我还将添加构建矩阵的代码,因为这可能会提供线索:
public void addNode (Node a){
int count = 0;
nodes.add(a);
matrix.add(new ArrayList<Integer>(nodes.size()));
for (List<Integer> list : matrix){
count++;
int diff = Math.abs(nodes.size() - list.size());
if (diff != 0){
for (int i = 0; i < diff; i ++)
matrix.get(count-1).add(0);
}
}
}
每次添加节点时,我都会更新矩阵的大小。 我希望这不是答案只是盯着我看的情况,但我太累了,看不到它。感谢您的帮助!
【问题讨论】:
标签: java arraylist indexoutofboundsexception adjacency-matrix