代码未返回预期的偶数和赔率
本文关键字:赔率 返回 代码 | 更新日期: 2023-09-27 18:00:09
我有一个函数,它接收一个数字列表,并返回列表中有多少偶数和奇数。然而,我通过了一个数字列表,但我得到了0个结果。
这是我的功能-
public static string HowManyEvenAndOdds(List<int> numbers)
{
int numOfOdds = 0;
int numOfEvens = 0;
int numOfBoth = 0;
foreach (int i in numbers) {
bool isEven = i % 2 == 0;
bool isOdd = i % 3 == 0;
numOfBoth = isEven && isOdd ? numOfBoth++ : numOfBoth;
numOfEvens = isEven ? numOfEvens++ : numOfEvens;
numOfOdds = isOdd ? numOfOdds++ : numOfOdds;
}
return string.Format("This list has {0} odd numbers,'n{1} even numbers,'nand {2} numbers that are even and odd.", numOfOdds, numOfEvens, numOfBoth);
}
你知道我在这里做错了什么吗?我调试了一遍,但没有一个列表是递增的。
感谢
您没有以正确的方式计算奇数i%3没有捕获5,这也是一个奇数,请尝试这个
bool isEven = i % 2 == 0;
bool isOdd =!isEven;
我同意Schachaf Gortler的回答以及p.s.w.g的评论。只需:
foreach (var number in numbers)
{
// A number is even if, and only if, it's evenly divisible by 2
if (number % 2 == 0)
numEvens++;
// A number is odd if, and only if, it's NOT evenly divisible by 2
// Alternatively, a number is odd if it isn't even and vice versa
else
numOdds++;
}
正如p.s.w.g.所提到的,不存在既有偶数也有奇数的数字,所以完全消除它。
顺便说一句,numOfEvens++检索值,然后将其递增,这就是代码不起作用的原因。
我认为你应该看看你的isOdd 测试
使用Linq Count扩展。
int numOfOdds = numbers.Count(x => x % 2 != 0);
int numOfEvens = numbers.Count(x => x % 2 == 0);
当然,根据下面的评论,您不需要同时计算这两个表达式。