2017-02-04 4 views
0

にforeachループを使用して2つの配列の値を比較するは、どのように私は、foreachループの中にループのためにこれを変換したいのC#

for(int i=0; i<arr.Length; i++) 
{ 
    if(arr[i]==arr[i+1] 
    { 
     // Do Something 
    } 
} 
+3

なぜそれをしたいですか? – obe

+0

foreachループでは、一度に1つのオブジェクトにしかアクセスできません。あなたのifステートメントは達成できません。 – FCin

+2

これは、最後の反復で 'IndexOutOfRangeException'につながります。なぜなら' i + 1'は 'arr.Length'であり、範囲外です。 –

答えて

2

はい、あなたが行うことができ、コードのいくつかの余分な行を持ちます。しかし、問題のコードは壊れてしまいます。条件i<arr.Lengthi<arr.Length-1に置き換えてください。 foreachループで動作するコードの下

は、あなたがあなたの配列は、少なくとも1を持っているかどうかを確認する必要があり、この

 int index=0; 
     foreach (var item in arr) 
     { 
      index++; 
      if (item == arr[index]) 
       Console.WriteLine("{0} = {1}", item, arr[index]); 

      if (index == arr.Count()-1) break; 
     } 
+1

'forer.'反復式の中で' arr.Skip(1) 'を使うと' isEntered'チェックを省略することができます。 – Greatran

1

(あなたの配列を仮定すると、整数の配列です)要素

 var previousItem = arr[0]; 
     foreach (var item in arr.Skip(1)) 
     { 
      if (previousItem == item) 
      { 
       // Do Something 
      } 
      previousItem = item; 
     } 
+0

@AbhishekMaurya、それをやりましたか? – user3598756

+0

@AbhishekMaurya、あなたを助けようとしている人々に感謝しています。 – user3598756

0

を試みることができる

  int previousValue = arr[0]; 
      bool isEntered = false; 
      foreach (int currentValue in arr) 
      { 
       if(isEntered) 
       { 
        if(previousValue == currentValue) 
        { 
         //do something 
        } 
       } 
       previousValue = currentValue; 
       isEntered = true; 
      } 
関連する問題