2016-05-28 111 views
0

我有一個包含3個元素的數組,我使用for -loop刪除"1", "2",但if - 條件總是爲false。有什麼問題?我如何獲得列表元素

string[] listCountAnwser = {"1", "2", "3"}; 
List<string> listCountAnwsers = new List<string>(listCountAnwser); 
for (int i = 0; i < listCountAnwsers.Count; i++) 
{ 
    if (Int32.Parse(listCountAnwsers[i]) < Int32.Parse(listCountAnwsers[i++])) 
    { 
     listCountAnwsers.Add(listCountAnwser[i]); 
    } 
} 

回答

2

有幾件事引起了我的注意。
起初,你使用增量操作符是錯誤的。爲了確保運行此代碼:

for (int i = 0; i < listCountAnwsers.Count; i++) 
    Console.WriteLine(listCountAnwsers[i] + "\t" + listCountAnwsers[i++]); 

輸出將是這樣的:

1 1 
3 3 

這就是爲什麼你的代碼永遠不會進入if -condition。
另一個問題是您刪除了元素。這需要更改列表的listCountAnwsers.Count屬性。爲了確保:

for (int i = 0; i < list.Length; i++) 
{ 
    listCountAnwsers.Remove(listCountAnwsers[i]); 
    Console.WriteLine(listCountAnwsers.Count); 
} 

輸出

2 
1 

然後例外argument out of range。確實。你也可以得到這樣的異常時,你會嘗試這樣的事:

if (Int32.Parse(listCountAnwsers[i]) < Int32.Parse(listCountAnwsers[i + 1])) 
    listCountAnwsers.Remove(listCountAnwser[i]); 

所以你的問題的解決取決於你需要什麼都沒有。你想在結果中包含什麼元素?請澄清

+0

這是我的錯誤。我的代碼應該是「listCountAnwsers.Add(listCountAnwser [i]);」 –

+0

@BinhHuynh好吧,你可以澄清你的問題,如果你仍然有一些問題。我會盡力幫助你。顯然,這個問題只是通過'i + 1'取代'i ++'來解決.. – red0ct

+0

我已經用i + 1取代了i ++,它的工作原理是 感謝您的幫助! –

0

試試這個。 i++檢查條件後增加i的值。所以你需要使用i+1

string[] listCountAnwser = {"1", "2", "3"}; 
List<string> listCountAnwsers = new List<string>(listCountAnwser); 
for (int i = 0; i < listCountAnwsers.Count; i++) 
{ 
    if (Int32.Parse(listCountAnwsers[i]) < Int32.Parse(listCountAnwsers[i+1])) 
    { 
     listCountAnwsers.Add(listCountAnwser[i]); 
    } 
} 
+0

感謝兄弟!我已經修復它:)愚蠢的錯誤 –