简体   繁体   English

写一个程序,读取N,然后不断读取整数,检查是否有奇数或偶数,直到奇数和偶数都等于N

[英]Write a program that reads N and then continuously read integers and check if there are odd or even until odd and even number equals N

This is what I tried:这是我试过的:

using System;

namespace OddAndEvenNumbers
{
    class Program
    {
        static void Main(string[] args)
        {
            int requiredOddAndEvenNumbers = Convert.ToInt32(Console.ReadLine());
            int oddNumbersCount = 0;
            int evenNumbersCount = 0;
            int n = Convert.ToInt32(Console.ReadLine());
            while (oddNumbersCount <= requiredOddAndEvenNumbers || evenNumbersCount <= requiredOddAndEvenNumbers)
            {
                if (n % 2 == 0)
                {
                    evenNumbersCount++;
                }
                else if (n % 2 != 0)
                {
                    oddNumbersCount++;
                }
            }
            Console.WriteLine(evenNumbersCount + " " + oddNumbersCount);
            Console.ReadLine();
        }
    }
}

I don't know why it doesn't work.我不知道为什么它不起作用。 The program should stop when odd numbers and even number equals N.当奇数和偶数等于 N 时,程序应该停止。

You never update n so the loop will never exit你永远不会更新n所以循环永远不会退出
So evenNumbersCount and oddNumbersCount will never count up所以evenNumbersCountoddNumbersCount永远不会计数

using System;

namespace OddAndEvenNumbers
{
    class Program
    {
        static void Main(string[] args)
        {
            int requiredOddAndEvenNumbers = Convert.ToInt32(Console.ReadLine());
            int oddNumbersCount = 0;
            int evenNumbersCount = 0;
            int n = Convert.ToInt32(Console.ReadLine());
            while (oddNumbersCount <= requiredOddAndEvenNumbers || evenNumbersCount <= requiredOddAndEvenNumbers)
            {
                if (n % 2 == 0)
                {
                    evenNumbersCount++;
                }
                else if (n % 2 != 0)
                {
                    oddNumbersCount++;
                }
                n++;
            }
            Console.WriteLine(evenNumbersCount + " " + oddNumbersCount);
            Console.ReadLine();
        }
    }
}

It seems you've forgotten to get new number inside the loop.看来您忘记了在循环中获取新号码。 It keeps checking the first number ItThe while loop works until the Odd + Even numbers are equal to n .它不断检查第一个数字 ItThe while 循环工作,直到Odd + Even numbers are equal to n

int requiredOddAndEvenNumbers = Convert.ToInt32(Console.ReadLine());
int oddNumbersCount = 0;
int evenNumbersCount = 0;
int n = 0;

while ((oddNumbersCount + evenNumbersCount) < requiredOddAndEvenNumbers)
{
    n = Convert.ToInt32(Console.ReadLine());
    if (n % 2 == 0)
    {
        evenNumbersCount++;
    }
    else if (n % 2 != 0)
    {
        oddNumbersCount++;
    }
}

Console.WriteLine("evenNumbersCount: {0}", evenNumbersCount);
Console.WriteLine("oddNumbersCount: {0}", oddNumbersCount);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM