首页 > 解决方案 > 计数单词和数字总和为什么不起作用?

问题描述

任务:程序要求用户输入文本,输入文本后,程序声明文本中有多少个单词。它还计算文本中的位数并将其显示在屏幕上。

    static void Main(string[] args)
    {
        Console.Write("Insert text: ");

        string s = Console.ReadLine();
        int count = 1, num, sum = 0, r;
        for (int i = 1; i < s.Length; i++)
        {
            if (Char.IsWhiteSpace(s[i]))
            {
                count++;
            }
        }
        num = int.Parse(Console.ReadLine());
        while (num != 0)
        {
            r = num % 10;
            num = num / 10;
            sum = sum + r;
        }
        Console.WriteLine("Sum of Digits of the Number : " + sum);
        Console.WriteLine("In text {1} names", s, count);

    }

该程序要求输入文本和数字。文本中的数字被计算为什么它不能正常工作?

标签: c#

解决方案


根据评论中描述的输入/输出,您不需要第二条 ReadLine 语句。您可以执行以下操作。

static void Main(string[] args)
{
    Console.WriteLine("Enter Text");
    var userEntry = Console.ReadLine();
    var countOfWords = userEntry.Split(new []{" "},StringSplitOptions.RemoveEmptyEntries).Count();
    var sum = userEntry.Where(c => Char.IsDigit(c)).Select(x=>int.Parse(x.ToString())).Sum();
    Console.WriteLine($"Count Of Words :{countOfWords}{Environment.NewLine}Sum :{sum}");
}

在这种情况下(根据您的评论),输入字符串为“xsad8 dlas8 dsao9”,其总和为 25。

如果输入字符串是“xsad8 dlas81 dsao9”,并且您希望将 81 视为 '81',而不是 8 和 1,则 Sum 可以按如下方式计算。

var sum = Regex.Split(userEntry, @"\D+").Where(s => s != String.Empty).Sum(x=>int.Parse(x));

上述情况下的总和为 98


推荐阅读