C#控制台应用:如何通过继承实现两个ASCII文本横向同屏显示
解决方案
问题核心在于当前输出逻辑:Egg() 先输出4行文本,Cat() 从新行开始输出,自然无法横向并排。要让两个图形在同一行显示,需要逐行拼接两个图形的对应行后再统一输出。
具体实现步骤
- 将Egg和Cat的图形拆解为每行字符串,分别存入数组
- 遍历两个数组,逐行拼接(行数较少的图形补空格对齐)
- 依次输出拼接后的每一行
修改后的代码示例
public class Program { // 存储Egg的每一行内容 private readonly string[] _eggLines = new[] { " ___", " / \\", " |’ |", " \\___/" }; // 存储Cat的每一行内容 private readonly string[] _catLines = new[] { " _,'| _.-''``-...___..--;", " /_ \\'. __..-' , ,--...--'''", " <\\ .`--''' ` /'", " `-';' ; ; ;", " __...--'' ___...--_..' .;.'", " (,__....----''' (,..--''" }; public void PrintSideBySide() { // 获取两个图形的最大行数,确保所有行都能输出 int maxLines = Math.Max(_eggLines.Length, _catLines.Length); for (int i = 0; i < maxLines; i++) { // 取当前行的Egg内容,超出行数则补空格(对齐Egg的宽度) string eggPart = i < _eggLines.Length ? _eggLines[i] : new string(' ', _eggLines[0].Length); // 取当前行的Cat内容,超出行数则为空 string catPart = i < _catLines.Length ? _catLines[i] : string.Empty; // 拼接并输出一行 Console.WriteLine($"{eggPart}{catPart}"); } } } public class My_Calculation : Program { static void Main(string[] args) { My_Calculation demo = new My_Calculation(); demo.PrintSideBySide(); Console.Read(); } }
优化说明
- 用数组存储每行内容,更易维护和调整对齐细节
- 通过
Math.Max处理行数不一致的情况,避免遗漏图形行 - 对行数少的图形补空格,保证横向对齐整齐
- 简化了逻辑结构,去掉了不必要的冗余代码
内容的提问来源于stack exchange,提问作者Mr. Skadoosh
相关产品推荐
相关产品推荐

