方法数组第一个奇数

时间:2014-03-03 18:42:49

标签: c# arrays methods

我卡住了,我正在尝试编写一个显示索引中第一个正奇数的代码。 出于某种原因,它没有这样做。它只显示我的索引中的第一个数字。我究竟做错了什么。我是新的,如果你能帮助我,我会非常感谢。此外,如果你能保持简单,也谢谢。

static void Main(string[] args)
{
    int[] A = { -2, 5, -1, 9, -6, 23, 67, 1, -8, 7, -3, 90 };
    int index = FirstPosOddNum(A);
    if (index >= 0)
    {
        Console.WriteLine("The first Positive value is: {0}, In Index {1}",
            A[index], index);
    }
    else
    {
        Console.WriteLine("No positive odd value available.");
    }
    Console.ReadLine();
}
static int FirstPosOddNum(int[] array)
{
    for (int i = 0; i < array.Length; i++)
    {
        if ((array[i] % 2 == 1) || (array[i] % 2 == -1))
            return i;
    }
    return -1;
}

4 个答案:

答案 0 :(得分:2)

试试这个:

static void Main(string[] args)
    {
        int[] A = { -2, 5, -1, 9, -6, 23, 67, 1, -8, 7, -3, 90 };
        int index = FirstPosOddNum(A);
        if (index >= 0)
        {
            Console.WriteLine("The first Positive value is: {0}, In Index {1}",
                A[index], index);
        }
        else
        {
            Console.WriteLine("No positive odd value available.");
        }
        Console.ReadLine();
    }
    static int FirstPosOddNum(int[] array)
    {
        for (int i = 0; i < array.Length; i++)
        {
            if (array[i] % 2 == 1)
                return i;
        }
        return -1;
    }

你的一些评论说,你需要从你的代码中删除你的数组[i]%2 == -1

答案 1 :(得分:2)

改变这个:

if ((array[i] % 2 == 1) || (array[i] % 2 == -1))

对此:

if ((array[i] > 0) && (array[i] % 2 == 1))

您想要找到第一个奇数数字,这正是if中的条件所说的。

答案 2 :(得分:0)

我编译并运行了你的代码。它没有你描述的问题。它正如您所希望的那样工作:

  

显示我的索引中的第一个正奇数

也许确定你Rebuild-All并且正在运行你实际看到的代码。

另外,另一个答案建议进行更改。

答案 3 :(得分:0)

你可以简单地说:

static int FirstPosOddNum(int[] array)
{
    int value = -1 ;
    for ( int i = 0; value < 0 && i < array.Length; ++i )
    {
      int x = array[i] ;
      if ( x > 0 && 0 != (x&1) ) value = x ;
    }
    return -1;
}

或(甚至更简单):

static int FirstPosOddNum(int[] array)
{
    int v = array.FirstOrDefault( x => x > 0 && 0 != (x&1) ) ;
    return v > 0 ? v : -1 ;
}