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

时间:2016-08-04 15:55:47

标签: c# console-application

我有一个函数,它接收一个数字列表,并返回列表中有多少个偶数和奇数。但是,我传入了一个数字列表,但我得到了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);

  }

关于我在这里做错了什么的想法?我通过它进行了调试,但没有一个列表正在递增。

由于

4 个答案:

答案 0 :(得分:6)

你不是以正确的方式计算奇数  i%3没有捕获5,这也是一个奇数,试试这个

 bool isEven = i % 2 == 0;
 bool isOdd =!isEven;

答案 1 :(得分:5)

我同意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 ++检索值然后递增它,这就是你的代码无效的原因。

答案 2 :(得分:1)

我认为您应该查看isOdd的测试

答案 3 :(得分:1)

使用Linq Count扩展名。

<body onload="sayHello()"></body>

当然,根据下面的评论,您无需评估这两种表达方式。