C#加载整数并显示奇数/偶数

oJM*_*86o 7 c#

您好想知道是否有更简单的方法来显示奇数/偶数.我知道我可以做一个for循环并加载一个列表.然后我可以编写另一个for循环来循环遍历列表并检查值是否为奇数/偶数:

for(i=0; i<100; i++)
 if(myList[i]%2==0) //even
    //do something
 else
    //odd do something
Run Code Online (Sandbox Code Playgroud)

但有没有办法缩短这一点,以便我可以轻松获得奇数或偶数的列表.不是家庭作业只是想知道.

Jes*_*alm 15

LINQ方式...奇数和偶数在1到100之间.

var even = Enumerable.Range(1,100).Where(i => i % 2 == 0);
var odd = Enumerable.Range(1,100).Where(i => i % 2 != 0);
Run Code Online (Sandbox Code Playgroud)

  • Lonli-Lokli然后需要两个头部开关来了解最新情况.对于如此微不足道的节省,可读性更为重要. (2认同)

Jon*_*onH 11

你可以使用某种lambdas:

//load a list, t, with 100 integers
List<int> t = Enumerable.Range(1, 100).ToList();

//find odd numbers
var oddNumbers = t.Where(num => num%2 != 0);

//find even numbers
var evenNumbers = t.Where(num => num%2 == 0);

//print odd numbers
foreach (int i in oddNumbers)
    Console.WriteLine(i);

//print even numbers
    foreach(int i in evenNumbers)
        Console.WriteLine(i);
Run Code Online (Sandbox Code Playgroud)

Enumerable只用1-100加载列表,然后我简单地抓取所有赔率/均匀然后打印它们.这一切都可以缩短为:

var e = Enumerable.Range(1, 100).Where(num => num%2==0); //for even numbers
var o = Enumerable.Range(1, 100).Where(num => num%2!=0); //for odd numbers
Run Code Online (Sandbox Code Playgroud)

e,o有一个隐式类型var.编译器可以确定其类型,因此这两行等效于:

List<int> eo = Enumerable.Range(1, 100).ToList(); //must tell it its a list
Run Code Online (Sandbox Code Playgroud)

然后直接找到列表类型的赔率/均衡:

List<int> o = eo.Where(num => num%2!=0).ToList();
List<int> e = eo.Where(num => num%2==0).ToList();
Run Code Online (Sandbox Code Playgroud)

打印它列在我的初始代码中.

  • 正确.为了清楚其他读者:如果A是负奇数,则A%2为-1.因此A%2 == 1不是"奇数"的测试,它是"正和奇都"的测试.A%2!= 0是对"奇数"的测试. (2认同)