2009-11-28 73 views
-1

我公司通過字符串列表循環,在psudocode我這是怎麼每個循環的幫助

for (each node in my list) 
    if the node.getBooleanVariable == true 
     add one to my counter 
    else 
     take one away from my counter 
    if my counter = another counter 
     print node.getStringVariable() //THIS IS WHERE I AM STUCK 

想在這裏與節點衛生組織未來的布爾元素來連接從node.getStringVariable()的字符串是假一個。這是否使它更清晰?

感謝

+2

改說這個問題,現在還不清楚。 – Bozho 2009-11-28 15:13:09

+4

也許一些真實的代碼會更好。 – Milhous 2009-11-28 15:14:19

+0

你可以發佈一些示例輸入和預期輸出嗎?我認爲這會讓你更容易理解你在做什麼。此外,由於您想在Java中得到答案,只需發佈​​帶有註釋的Java代碼,而不是使用僞代碼就可以使問題更清楚。 – 2009-11-28 15:15:42

回答

0

如果你的邏輯需要「期待」在您的列表在遍歷它來尋找下一個假節點,然後換每個可能並不合適。這是因爲for-each只允許您在任何給定時間查看列表的當前元素。如果你可以分享一些關於循環需求的背景信息,那麼有人可能會建議一些無需向前看的僞代碼。

如果事實證明您必須向前看,您可能必須使用循環標準來獲得更多控制權。

for (int i = 0; i < myList.size(); i++) { 
    Node node = myList.get(i); 
    // oh, I have to look forward? use another for loop 
    for (int j = i + 1; j < myList.size(); j++) { 
     Node forwardNode = myList.get(j); 
     // do stuff with forwardNode 
    } 
} 
+0

這是我如何開始的,但是我使用的列表沒有尺寸方法,所以沒有辦法確定它的長度,否則這是我會採取的方法;) – timmy 2009-11-28 15:29:52

+0

因此,您使用的是自定義列表,而不是內置的Java列表之一,還是數組?那是部分任務嗎? – 2009-11-28 16:04:08

1

如果你的節點列表不是太長,會更清晰(在我看來)分離出你需要連接到另一個列表,然後在最後將它們連接起來的字符串。例如:

for (each node in my list) 
    if the node.getBooleanVariable == true 
     add one to my counter 
    else 
     take one away from my counter 
    if my counter = another counter 
     concatList.add(node.getStringVariable()) 

for (each str in concatList) 
    finalString += str 

這不會是最絕對有效的方法,但它不會壞。如果您的列表只有幾千個元素,您將不會注意到創建單獨列表的開銷。而且我認爲這樣理解會容易一點,但這只是個人意見。