C#循环计算年龄总和后总数值无法显示问题求助
问题分析与解决方案
嘿,我一眼就瞅见问题所在了!你代码里没法显示年龄总和的原因非常直接——最后一行的Console.WriteLine调用方式错啦。
问题根源
你现在写的是:
Console.WriteLine("\ntotal of ages in list: ", tot);
Console.WriteLine的这个重载要求第一个参数是带占位符(比如{0})的格式化字符串,这样第二个参数才会被替换到占位符的位置。要是没加占位符,第二个参数直接就被忽略了,所以你只会看到文字total of ages in list: ,看不到tot里的311。
修正方法
把最后一行改成下面两种方式里的任意一种就行:
方式1:用格式化占位符(更推荐)
Console.WriteLine("\ntotal of ages in list: {0}", tot);
这里的{0}会被tot的数值替换,这样就能正确输出总和了。
方式2:字符串拼接
Console.WriteLine("\ntotal of ages in list: " + tot);
这种是把字符串和数值直接拼起来,也能生效,但如果以后要输出多个变量,占位符的写法会更清晰好维护。
额外优化小技巧
计算年龄总和其实还能简化,用LINQ一行搞定,不用手动写foreach循环:
int tot = people.Sum(p => p.Age);
不过要记得在文件顶部加上LINQ的命名空间:
using System.Linq;
修正后的代码片段
最后那部分代码调整后应该是这样:
int tot = 0; foreach(Person per in people) { tot += per.Age; } // 用格式化占位符输出总和 Console.WriteLine("\ntotal of ages in list: {0}", tot); // 或者换成LINQ的简化写法 // int tot = people.Sum(p => p.Age); // Console.WriteLine("\ntotal of ages in list: {0}", tot);
这样运行起来,就能正常显示你调试时确认的311这个数值啦!
内容的提问来源于stack exchange,提问作者Bran
相关产品推荐
相关产品推荐

