2013-02-27 67 views
-4

我有一個具有四個布爾值的數組。我想找到第n個真正的索引。例如,如果它們是false, true, true, true而n是2,它將返回3.有什麼方法可以輕鬆地做到這一點?我所有的嘗試都很快就變成了一團糟。如何找到數組中第n個元素的索引以匹配條件?

+0

我試過'Array.IndexOf(myarray的,true,Array.IndexOf(myArray,true,0))',將它嵌套到另一個時間,以得到我想要的結果,但我確信有更好的方法。 – undergroundmonorail 2013-02-27 06:51:26

+0

你會怎麼做?你會穿過陣列,直到找到滿足條件的第一個元素。現在你不需要找到n而是n-1,並且你繼續通過數組直到n爲0,現在你應該處於滿足條件的第n個元素的位置。 – Corak 2013-02-27 06:53:02

+0

您需要多次調用'Array.IndexOf(bool [],bool,int)('n'次才能找到第n個出現)。每次使用前一次調用的輸出(加一)作爲下一次調用的'startIndex'。使用'for'循環來重複你的'n'。 – 2013-02-27 07:13:55

回答

1

你爲什麼不使用一個簡單的foreach,雖然你的數組沒有很多元素不會把任何低效率的代碼:

var ReachCount=2; 
var count=0; 
Boolean[] bools = {false, true, true, false}; 
foreach (Boolean element in bools) 
{ 
    if (element) count++; 
    if (count==ReachCount) return; 
} 
+0

因爲無論如何你都需要這個索引,所以你最好使用'for'循環而不是'foreach'循環。 – 2013-02-27 07:33:03

+0

是的,也許最好是用'for'循環來做 – 2013-02-27 07:42:40

相關問題