2016-05-28 12 views
0

3要素の配列を持っていますが、for -loopを使用して"1", "2"を削除しますが、if -conditionは常に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

いくつか私の目を引っ張った。
まず、増分演算子を使用するのは間違いです。必ず実行にこのコードを作成するには:あなたのコードはif -conditionに入ったことがない理由であること

1 1 
3 3 

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

出力は次のようになります。
別の問題は、elemetsを削除することです。これにより、リストのlistCountAnwsers.Countプロパティが変更されます。その後argument out of rangeよう例外

2 
1 

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

出力:確認します。確かに。また、次のような場合にこのような例外が発生することがあります。

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 ++をi + 1で置き換えました。それは働いた ありがとう! –

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

ありがとうございました!私はそれを修正しました:)愚かな間違い –

関連する問題