1

我正在尝试使用查找数组元素的索引,

int[] arr = { 10, 20, 10 };
for ( int i; i,arr.length; i++)
{
int Tempval = arr[i];
index = Array.IndexOf(arr, Tempval);
console.writeline(index);
}

但它每次返回 10 即 0 的相同索引。我怎么能控制它..??请帮忙。

问候

4

3 回答 3

0

像这样做:

int[] arr = { 10, 20, 10 };
for ( int i=0; i<arr.length; i++)
{
int Tempval = arr[i];
index = Array.IndexOf(arr, Tempval);
console.writeline(index);
}
于 2013-05-09T06:12:39.043 回答
0

使用 LINQ,您可以:

int[] arr = { 10, 20, 10 };
var result =
              arr.Select((r, index) => new { Value = r, Index = index })
             .GroupBy(item => item.Value)
             .Where(grp => grp.Count() > 1)
             .Select(r => new { Indexes = r.Select(t => t.Index).ToArray() })
             .FirstOrDefault();

对于输出:

foreach (var value in result.Indexes)
    Console.WriteLine(value);

输出将是:

0
2
于 2013-05-09T06:15:23.477 回答
-2

您已经在使用循环并且 i 是您的索引,为什么要再次查找索引?

int[] arr = { 10, 20, 10 };
for ( int i=0; i<arr.length; i++)
{
 int Tempval = arr[i];
 index = Array.IndexOf(arr, Tempval);
 console.writeline(i);
}

如果你想要所有的索引,

        public IEnumerable<int> FindIndexes(int[] array, int value)
        {
            for (int i = 0; i < array.Length; i++)
            {
                int Tempval = array[i];
                if (Tempval == value)
                {
                    yield return i;
                }
            }
        }

并打电话FindIndexes(arr, 10);

于 2013-05-09T06:12:50.997 回答