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

时间:2010-03-02 20:50:32

标签: c#

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

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

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

7 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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);

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

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

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

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

List<int> o = eo.Where(num => num%2!=0).ToList();
List<int> e = eo.Where(num => num%2==0).ToList();

要打印它会列在我的初始代码中。

答案 2 :(得分:3)

你可以使用LINQ来拉出奇数或偶数,然后处理:

var even = myList.Where(i => i%2==0);
foreach(var number in even)
     // do something

答案 3 :(得分:3)

var t = Enumerable.Range(1, 100).ToList();
var oddNumbers = t.Where(n => (n & 1) != 0).ToList();
var evenNumbers = t.Where(n => (n & 1) == 0).ToList();

答案 4 :(得分:1)

我认为你不必创建第一个循环。你可以:

for (i=1; i < 101; i++)
{
   if (i % 2 != 0)
   {
      //do something
   }
}

甚至:

for (i=1, i < 101, i+=2)
{
   //do something
}

答案 5 :(得分:0)

根据这些公式填充您的列表

Odds[0->N] = 2*i+1
Evens[0->N] = 2*i

答案 6 :(得分:0)

如果您只需要一半数字,只需生成一半数字(..; ..; i = i + 2)

如果您需要所有数字但希望避免额外的循环,您可以在初始循环期间标记它们或处理它们。

或者,在创建过程中,最多可以创建三个列表/数组 - 一个用于所有数字,另一个用于赔率,第三个用于平均值。

是否有特定的申请?