C#循环内执行字符串拼接如何让固定开头文本仅输出一次?
问题原因
你将固定前缀的输出逻辑放在了循环体内部,所以每生成一个随机数都会重复输出前缀。你需要的单循环实现方案如下,同时还能顺便解决原有代码末尾多余+号的问题:
实现方案
方案1:循环内判断索引,直接逐段输出
该方案全程仅遍历一次,无额外内存开销,是性能最优的实现:
int sum = 0; Random rnd = new Random(); int[] numbers = new int[10]; for (int i = 0; i < numbers.Length; i++) { int num = rnd.Next(101, 10000); numbers[i] = num; sum += num; // 仅首次循环输出前缀 if (i == 0) { Console.Write("Calculating the result of: " + num); } else { Console.Write(" + " + num); } } // 循环结束后输出计算结果 Console.WriteLine(" = " + sum);
如果需要简化代码,可以用三目运算符合并输出逻辑:Console.Write(i == 0 ? $"Calculating the result of: {num}" : $" + {num}");
方案2:单循环内用StringBuilder拼接表达式后输出
如果后续需要复用表达式文本,推荐用该方案,避免频繁字符串拼接带来的性能损耗,注意使用该方案需要在代码顶部引入using System.Text;命名空间:
int sum = 0; Random rnd = new Random(); int[] numbers = new int[10]; StringBuilder expressionBuilder = new StringBuilder("Calculating the result of: "); for (int i = 0; i < numbers.Length; i++) { int num = rnd.Next(101, 10000); numbers[i] = num; sum += num; if (i > 0) { expressionBuilder.Append(" + "); } expressionBuilder.Append(num); } expressionBuilder.Append(" = ").Append(sum); Console.WriteLine(expressionBuilder.ToString());
内容的提问来源于stack exchange,提问作者General.Stuff
相关产品推荐
相关产品推荐

