簡體   English   中英

for循環java不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM