如何确定字符串中是否有偶数

时间:2018-01-09 19:02:35

标签: c#

嗨,我有一个问题,我差点解决了。这是我的问题: 让我们编写一个控制台应用程序,打印一系列整数中的所有数字。 每行输入一个数字,应用程序将逐个读取,直到用户写入字符而不是数字。当用户键入x时,应用程序知道字符串中的所有数字都已输入,并按照输入的顺序逐个显示字符串中出现的所有数字。

如果数字不在字符串中,则应用程序将显示N / A文本。

示例:

输入:

4 3 6 7 X 控制台将显示:

4 6

这是我解决问题的方法:

            string[] numbers = new string[10];
        for(int i = 0; i < numbers.Length; i++)
        {
            numbers[i] = Console.ReadLine();
            if(numbers[i] == "x")
            {
                break;
            }
        }
        for (int i = 0; i < numbers.Length; i++)
        {
            if (Int32.Parse(numbers[i]) % 2 == 0)
            {
                Console.WriteLine(numbers[i]);
            }
        }

我不知道怎么做这个问题的最后一部分,那个人 要求我显示N / A文本。请帮忙!

2 个答案:

答案 0 :(得分:1)

解决此问题的一种方法是将您的号码存储在List<int>中。然后,当从控制台读取输入时,您可以使用int.TryParse来确定输入是否是有效整数。如果是,如果它是偶数,则将其添加到列表中;如果不是我们可以退出循环。

然后我们可以检查列表计数以确定是否输入了任何偶数,如果计数&gt;我们将显示它们。 0或我们输出&#34; N / A&#34;。

例如:

var evenNumbers = new List<int>();

// Infinite loop is exited by the 'break' command below
while (true)
{
    // If the user enters a valid integer, TryParse will store it in this
    int number;

    // We read a line from the console and pass it to int.TryParse, which will
    // return 'true' if the input is a valid int and will store it in 'number'
    // If it returns false, then we break from the loop
    if (!int.TryParse(Console.ReadLine(), out number)) break;

    // If the number entered is Even, add it to our list
    if (number % 2 == 0) evenNumbers.Add(number);
}

// If there are any items in our list, then print them. Otherwise print "N/A"
if (evenNumbers.Count > 0)
{
    foreach (int evenNumber in evenNumbers)
    {
        Console.WriteLine(evenNumber);
    }
}
else
{
    Console.WriteLine("N/A");
}

答案 1 :(得分:0)

我拿了你的代码并对其进行了一些修改。

  1. 检查在解析之前是否从数组中读取X
  2. 添加了一个bool变量,以便您知道何时找到了数字
  3. 检查bool变量是否为false,这样就可以打印N / A

    string[] numbers = new string[10];
    bool found = false;
    for(int i = 0; i < numbers.Length; i++)
    {
        numbers[i] = Console.ReadLine();
        if(numbers[i] == "x")
        {
            break;
        }
    }
    for (int i = 0; i < numbers.Length; i++)
    {
        if(numbers[i] != "x")
        {
            if (Int32.Parse(numbers[i]) % 2 == 0)
            {
                found = true;
                Console.WriteLine(numbers[i]);
            }
        }
    }
    if(found == false)
    {
         Console.WriteLine("N/A");
    }
    Console.ReadLine(); //So you can pause and see the output.
    
  4. 保持代码尽可能简单,这样你就可以看到最新情况。