【问题标题】:how can I make a output of even and odd numbers如何输出偶数和奇数
【发布时间】:2021-03-26 07:44:55
【问题描述】:
List<int> number= new List<int> { 0, 5, 6, 9, 14, 21, 45, 76, 123, 172, 212, 313 };

输出: 偶数:0、6、14、76、172、212 奇数:5、9、21、123、313

像这样使用 foreach 和 if / else

我尝试了什么:

 static void Main(string[] args)
        {
            List<int> number= new List<int> { 0, 5, 6, 9, 14, 21, 45, 76, 123, 172, 212, 313 };
            foreach (int numbers in number)
            {

                if (numbers % 2 == 0)
                {
                    Console.WriteLine(numbers);
                }
                else
                {
                    Console.WriteLine(numbers);
                }

            }
            Console.WriteLine("even number:"numbers);
            Console.WriteLine("odd number:"+numbers);
            Console.ReadLine();
        }

【问题讨论】:

  • number.Where(p =&gt; (p &amp; 1) == 1) 表示所有奇数,number.Where(p =&gt; (p &amp; 1) == 0) 表示所有偶数
  • number%2==0 为偶数,其他为奇数
  • 您可以向我们展示您尝试过的代码。
  • 您将所有数字放入完全相同的列表中。请改用两个列表,一个用于赔率,一个用于偶数。
  • 这能回答你的问题吗? Testing if a list of integer is odd or even

标签: c#


【解决方案1】:

您只是在打印 - 或至少尝试这样做 - 每次迭代的整个列表。实际上你想打印 current 数字。此外,您应该将输入列表分为两个列表,一个用于偶数,一个用于奇数。最后,您可以通过迭代它们的元素来打印这些列表:

var even = new List<int>; 
var odd = new List<int>();
foreach (int numbers in number)
{
    if (numbers % 2 == 0)
    {
        even.Add(number);
    }
    else
    {
        odd.Add(number);
    }
}

这甚至可以通过一个 linq 来简化:

var odd = numbers.Where(x => x % 2 == 1).ToList();
var even = numbers.Where(x => x % 2 == 0).ToList();

为了打印这些列表,您需要:

Console.WriteLine("Odd Numbers: " + string.Join(',', odd));
Console.WriteLine("Even Numbers: " + string.Join(',', even));

如果你只使用Console.WriteLine(odd),你会得到List{1},因为没有关于如何打印列表的通用实现(ToString 只会返回List&lt;T&gt; 的类型)。

【讨论】:

  • 谢谢它帮了我很多,我不知道我可以创建新列表!
  • 旁注:可以去掉 if 并放置一个衬垫 foreach (int numbers in number) ((numbers % 2 == 0) ? even : odd).Add(number);
【解决方案2】:

可以通过下面的方法实现

奇数

List<int> oddNumbers = number.Where(x => x % 2 != 0).ToList();

偶数

List<int> evenNumbers = number.Where(x => x % 2 == 0).ToList();

** 更新:作为帖子所有者更新问题并要求打印结果,所以这里是解决方案

Console.WriteLine("Odd numbers: " +String.Join(',', oddNumbers));
Console.WriteLine("Even numbers: " +String.Join(',', evenNumbers));

【讨论】:

  • 截至 OPs 编辑,这似乎不是问题。
猜你喜欢
  • 1970-01-01
  • 2021-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多