[英]for-loop java not working
我有以下格式的2個文件(節點和成本)
節點文件為(起始節點,結束節點)
A B
A C
成本文件為(節點,成本)
A 6
B 5
C 8
如果用戶指定的起始節點為'A',則以下方法應在節點文件中搜索A,然后將相應的末端節點(在這種情況下為B,C)添加到列表neighbournodes
節點中,並且如果這些末端節點與節點匹配在成本文件中,則應將那些相應的成本(在本例中為h_cost
)添加到列表h_cost
因此,我得到了以下循環來執行此操作。 我的neighbournodes
h_cost
工作正常(即它正在輸出B,C),但是我的h_cost
不輸出h_cost
,而是輸出空列表。
for(int i=0; i<size; i++) {
if(startnode.equalsIgnoreCase(nodes[i].getStartNode()))
{
neighbournodes.add(nodes[i].getEndNode());
int newi = i;
if(nodes[newi].getEndNode().equalsIgnoreCase(cost[i].getNode()))
{
h_cost.add(cost[i].getCost());
}
}
}
System.out.println("neighbouring nodes are "+neighbournodes);
System.out.println("H_cost is "+h_cost);
我不確定我的循環在哪里出現問題,有人可以讓我知道我要去哪里了嗎? 我應該使用增強的for循環嗎?
您不應在循環中使用相同的索引變量。 嘗試這個:
for(int i = 0; i < size; i++) {
if(startnode.equalsIgnoreCase(nodes[i].getStartNode())) {
neighbournodes.add(nodes[i].getEndNode());
for(int j = 0; j < cost.length; j++) {
if(nodes[i].getEndNode().equalsIgnoreCase(cost[j].getNode())) {
h_cost.add(cost[j].getCost());
}
}
}
}
System.out.println("neighbouring nodes are "+neighbournodes);
System.out.println("H_cost is "+h_cost);
在我看來,邏輯似乎還可以,但是使用相同的索引可能會弄亂它的值。 我也假設cost.length
等於成本文件中的條目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.