当我按Enter键而不给出任何值时,我希望第一种情况返回我,但是第二种情况给我

时间:2019-03-31 16:24:51

标签: c#

using System;
using System.Collections.Generic;

namespace Program
{
    class Pro
    {
        static void Main (string[] args)
        {
            var names = new List<string>();
            var Line = Console.ReadLine().Split();

            foreach (var item in Line)
            {
                names.Add(item);
            }

            switch (names.Count)
            {
                case 0:
                    Console.WriteLine();
                    break;
                case 1:
                    Console.WriteLine(names[0] + "Likes your post");
                    break;
                case 2:
                    Console.WriteLine(names[0] + "and" + names[1] + "Likes your post");
                    break;
                default:
                    Console.WriteLine(names[0] + " and " + names[1] + " and "
                        + (names.Count - 2)+"Likes your post");
                    break;
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

如@ZorgoZ所述,您应该使用Split方法选项RemoveEmptyEntries来删除空字符串。

类似这样的东西:

var line = Console.ReadLine().Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries);

使用此选项,您应该在switch语句中获得第一种情况。

您可以阅读有关String.Split Method here

的更多信息

答案 1 :(得分:0)

我没有测试过您的代码,也没有遇到此特定问题。但是我的猜测是它将在您的列表中添加“”(空字符串)。我建议您在将每个条目添加到列表时将它们打印到控制台...只是为了查看它添加到列表中的内容。然后,如果要解决此问题,请确保通过将空字符串与“”进行比较来跳过带有空字符串的条目,并在发现空字符串的情况下跳过添加指令

让我知道怎么回事。