我正在编写一个程序来计算两个节点之间的最短路径。在我的程序中,我有一个名为 NodeList 的自定义类,它包含一个字符串(表示节点)和距离的 ArrayList。我正在使用 Dijkstra 算法,该算法涉及打开每个节点的最短边。因此,我使用此循环来列出从给定点出发的可能路线:
for ( NodeList ed : edges )
{
if (ed.nodeList.get(0).equals(node1))
{
routes.add(ed);
}
}
这工作正常,并且似乎将正确的值加载到变量中(根据调试器)。但是,当我尝试将变量设置为其中一个节点的距离时,我收到一条消息“找不到符号变量距离”。这是导致问题的代码:
int minDistance = routes.get(0).distance;
这是不正常的还是我遗漏了一些明显的东西?
最佳答案
get(0)
显然返回了一个没有特定字段的类类型的对象。
根据问题的根本原因,有多种解决方案:
- 如果可能,参数化列表(例如
NodeList<Route>
而不是NodeList
) - 将其转换为正确的类型(例如
int distance = ((Route) routes.get(0)).distance)
- 公开该字段(例如
public int distance;
) - 添加一个 getter(例如
public int getDistance() { return this.distance; }
)并使用它。
关于java - 在类的一个实例上找不到公共(public)符号变量 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1873866/