代码未返回预期的偶数和赔率

本文关键字:赔率 返回 代码 | 更新日期: 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);

当然,根据下面的评论,您不需要同时计算这两个表达式。