我有一个函数,它接收一个数字列表,并返回列表中有多少个偶数和奇数。但是,我传入了一个数字列表,但我得到了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);
}
关于我在这里做错了什么的想法?我通过它进行了调试,但没有一个列表正在递增。
由于
答案 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)