在 C# 数组中查找奇数或偶数
Finding odd or even in an C# array
我应该创建一个方法,它接受一个数组并判断数字是奇数还是偶数。我想我已经接近答案了,但是当我 运行 代码时,它弹出“索引超出数组范围”。有办法解决这个问题吗?
private static string OddOrEven(int[] integerArray, string[] numAssign)
{
foreach (int i in integerArray)
{
if (integerArray[i] % 2==0)
{
numAssign[i] = " is even";
string returnValue = integerArray[i] + numAssign[i];
return returnValue;
}
else
{
numAssign[i] = " is odd";
string returnValue = integerArray[i] + numAssign[i];
return returnValue;
}
}
return "";
}
我还是 c# 的新手,所以非常感谢任何帮助。
您的错误在于 foreach
的工作方式。我将提供一个不同的示例来帮助您理解:
List<Person> people = GetPeople();
foreach (Person p in people)
{
Console.WriteLine(p.Name);
}
如您所见,foreach
中的变量实际上接收的是每个项目,而不是其索引。只是你有一个 int
的列表,所以对你来说不是那么明显。
您似乎想要一个常规的 for
循环:
for(int i = 0; i < integerArray.Length; ++i)
{
if (integerArray[i] % 2==0)
{
numAssign[i] = " is even";
string returnValue = integerArray[i] + numAssign[i];
return returnValue;
}
else
{
numAssign[i] = " is odd";
string returnValue = integerArray[i] + numAssign[i];
return returnValue;
}
}
下一个奇怪的事情是您的 return returnValue;
- if
语句只能输入一个或另一个,因此它总是 return 一个仅用于第一项的字符串。它不会继续到第二个、第三个、第四个等项目,因为它在循环有机会移动到下一个值之前已经离开了方法。
推测
我希望您想要这样的结果数组:
private static string[] OddOrEven(int[] integerArray)
{
string[] resultValues = new string[integerArray.Length];
for (int i = 0; i < integerArray.Length; ++i)
{
if (integerArray[i] % 2==0)
{
string numAssign = " is even";
resultValues[i] = integerArray[i] + numAssign;
}
else
{
string numAssign = " is odd";
resultValues[i] = integerArray[i] + numAssign;
}
}
return resultValues;
}
请注意,我已经从方法参数中删除了 numAssign
传入数组,现在只需在方法本身中构建它。
这将产生结果 like this。
我应该创建一个方法,它接受一个数组并判断数字是奇数还是偶数。我想我已经接近答案了,但是当我 运行 代码时,它弹出“索引超出数组范围”。有办法解决这个问题吗?
private static string OddOrEven(int[] integerArray, string[] numAssign)
{
foreach (int i in integerArray)
{
if (integerArray[i] % 2==0)
{
numAssign[i] = " is even";
string returnValue = integerArray[i] + numAssign[i];
return returnValue;
}
else
{
numAssign[i] = " is odd";
string returnValue = integerArray[i] + numAssign[i];
return returnValue;
}
}
return "";
}
我还是 c# 的新手,所以非常感谢任何帮助。
您的错误在于 foreach
的工作方式。我将提供一个不同的示例来帮助您理解:
List<Person> people = GetPeople();
foreach (Person p in people)
{
Console.WriteLine(p.Name);
}
如您所见,foreach
中的变量实际上接收的是每个项目,而不是其索引。只是你有一个 int
的列表,所以对你来说不是那么明显。
您似乎想要一个常规的 for
循环:
for(int i = 0; i < integerArray.Length; ++i)
{
if (integerArray[i] % 2==0)
{
numAssign[i] = " is even";
string returnValue = integerArray[i] + numAssign[i];
return returnValue;
}
else
{
numAssign[i] = " is odd";
string returnValue = integerArray[i] + numAssign[i];
return returnValue;
}
}
下一个奇怪的事情是您的 return returnValue;
- if
语句只能输入一个或另一个,因此它总是 return 一个仅用于第一项的字符串。它不会继续到第二个、第三个、第四个等项目,因为它在循环有机会移动到下一个值之前已经离开了方法。
推测
我希望您想要这样的结果数组:
private static string[] OddOrEven(int[] integerArray)
{
string[] resultValues = new string[integerArray.Length];
for (int i = 0; i < integerArray.Length; ++i)
{
if (integerArray[i] % 2==0)
{
string numAssign = " is even";
resultValues[i] = integerArray[i] + numAssign;
}
else
{
string numAssign = " is odd";
resultValues[i] = integerArray[i] + numAssign;
}
}
return resultValues;
}
请注意,我已经从方法参数中删除了 numAssign
传入数组,现在只需在方法本身中构建它。
这将产生结果 like this。