c# - 在 C# 数组中查找奇数或偶数
问题描述
我应该创建一个方法,该方法接受一个数组并判断数字是奇数还是偶数。我想我已经接近答案了,但是当我运行代码时,它会弹出“索引超出数组范围”。有没有办法解决这个问题?
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
语句只能输入一个或另一个,所以它总是只为第一项返回一个字符串。它不会继续到第二个、第三个、第四个等项目,因为它在循环有机会移动到下一个值之前已经离开了方法。
猜测
我希望你想要一个这样的结果数组:
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
从方法参数中删除了传入数组,现在只需在方法本身中构建它。
这将产生这样的结果。
推荐阅读
- django - 从 django 在 s3 中创建用户名目录
- blazor - 如何在 blazor(.razor 页面)中设置默认类型 @typeparam TValue = bool
- docker - 使用 docker 时 gitlab 的问题
- c# - 在 MS Build 中构建解决方案会引发(非显示字符?)错误
- powerbi - 有没有办法在 Power BI 中将 x 轴(时间)固定在一定范围内?
- beautifulsoup - 是否有使用 Mechanicalsoup 或 BeautifulSoup 在 HTML 中返回下拉列表选项的功能?
- java - 无法从 CursorWindow 读取第 0 行第 5 列。确保在从光标访问数据之前正确初始化光标
- r - 如何根据少数国家的计数(n)大小绘制带有一些圆圈的世界地图,这些国家的传单在 R 中?
- javascript - 如何防止子节点上的父事件处理程序?
- regex - 使用 ZMV 递归地将所有下划线替换为空格