c# - 计数单词和数字总和为什么不起作用?
问题描述
任务:程序要求用户输入文本,输入文本后,程序声明文本中有多少个单词。它还计算文本中的位数并将其显示在屏幕上。
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);
}
该程序要求输入文本和数字。文本中的数字被计算为什么它不能正常工作?
解决方案
根据评论中描述的输入/输出,您不需要第二条 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
推荐阅读
- swift - FileHandler 输出的更多缓冲区?
- android - 如何解决 React Native Google 地图问题“错误:无法解析 ':react-native-maps@release/compileClasspath' 的依赖关系”?
- python-3.x - 如何在 coouture 请求之外发送 websocket 消息
- nginx - 为什么 nginx 在我的 Kubernetes Ingress 路由上返回 404?
- react-native - 如何使用 React Native 中的 Animated API 将命运之轮停在特定点?
- azure-devops - 当我尝试部署版本时 Azure DevOps Server 挂起 - 这是什么原因/补救措施?
- java - Spring Boot:如何根据当前环境或 spring 配置文件使用自定义 logback.xml
- node.js - 如何在 setTimeout 中调用异步函数
- node.js - 在 nodejs 中,如何先读取 CSV 标头但仍异步处理文件的其余部分
- java - 如何在数组中设置double类型的值