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