C#如何将字符串追加到当前控制台输出行末尾 附编程练习题需求
问题原因
你使用的Console.WriteLine()方法会在输出内容末尾自动追加换行符,所以每调用一次就会生成新行,无法实现内容追加到同一行的效果。正确的实现逻辑是:先在变量中拼接好当前行的全部内容,最后再一次性调用输出方法打印整行。
修正后的完整实现代码
static void Main(string[] args) { int num = -20; // 存储上一行是否同时包含!和#,对应需求5的标记位 bool lastLineHasBoth = false; while (num <= 20) { // 跳过5-15的数字,对应需求1 if (num >=5 && num <=15) { num++; continue; } // 初始化当前行内容变量,所有规则匹配后再统一输出 string currentLine = ""; // 能被3整除开头加!,对应需求4 if (num % 3 == 0) { currentLine += "!"; } // 负数开头加*,对应需求2 if (num < 0) { currentLine += "*"; } // 拼接当前数字本身 currentLine += num.ToString(); // 能被2整除末尾加#,对应需求3 bool currentHasHash = num % 2 == 0; if (currentHasHash) { currentLine += "#"; } // 上一行同时有!和#则追加wow,对应需求5 if (lastLineHasBoth) { currentLine += "wow"; } // 一次性输出整行,避免多余换行 Console.WriteLine(currentLine); // 更新标记位,记录当前行是否同时包含!和#,供下一行判断使用 bool currentHasExclamation = num % 3 == 0; lastLineHasBoth = currentHasExclamation && currentHasHash; num++; } }
关键逻辑说明
- 所有行内容先存储在
currentLine变量中完成全部规则拼接,再统一输出,彻底避免多次调用输出方法产生的多余换行问题 - 用
lastLineHasBoth布尔变量记录上一行的状态,严格匹配需求5的判断要求 - 跳过5-15区间的逻辑使用
continue直接进入下一轮循环,代码结构更清晰易读
内容的提问来源于stack exchange,提问作者user17138068
相关产品推荐
相关产品推荐

