更简单的方法是打印行到控制台的行?

时间:2015-12-12 16:42:16

标签: c# console-application

我想知道,我正在制作一个计算器C#控制台应用程序,只是为了练习语言,我设置了一个小的显示器,打印出包含数字的零盒。我在它下面设置了一种图例,所以每个数字都对应一个等式,例如: 1 =形状面积,2 =功能。它打印正确,但问题是我的代码如下所示:

static void WriteMenu()
{
    Console.WriteLine("\n \n");
    Console.WriteLine("  OOOOOOOO     OOOOOOOO     OOOOOOOO     OOOOOOOO     OOOOOOOO\n  O      O     O      O     O      O     O      O     O      O");
    Console.WriteLine("  O  1   O     O  2   O     O  3   O     O  4   O     O  5   O\n  O      O     O      O     O      O     O      O     O      O");
    Console.WriteLine("  OOOOOOOO     OOOOOOOO     OOOOOOOO     OOOOOOOO     OOOOOOOO");
    Console.WriteLine("\n \n");
    Console.WriteLine("  OOOOOOOO     OOOOOOOO     OOOOOOOO     OOOOOOOO     OOOOOOOO\n  O      O     O      O     O      O     O      O     O      O");
    Console.WriteLine("  O  6   O     O  7   O     O  8   O     O  9   O     O  10  O\n  O      O     O      O     O      O     O      O     O      O");
    Console.WriteLine("  OOOOOOOO     OOOOOOOO     OOOOOOOO     OOOOOOOO     OOOOOOOO");            
}

我只是想知道是否有一种更简单的方法,所以如果将来我想要做任何排序(打印文本组)没有一堆丑陋的WriteLines。如前所述,我是一名初学者,所以我对这门语言一无所知。

它应该打印的方式是2x4,这是主要困难的来源。

2 个答案:

答案 0 :(得分:0)

您可以在字符串上使用@(逐字字符串文字修饰符):

var text = @"This
is my multi-
line string";

答案 1 :(得分:0)

您可以将单个框划分为单独的行。为每一行创建一个变量。然后根据您需要的盒子数量,您可以根据需要多次添加线条。将其封装到单独的方法中并根据需要多次调用它。下面的示例构建了简单整数的框:

class Program
{
    static void Main(string[] args)
    {
        List<int> numbers1 = new List<int>() { 0, 1, 2, 3, 4 };
        List<int> numbers2 = new List<int>() { 5, 6, 7, 8, 9 };

        DisplayBoxedInts(numbers1);
        DisplayBoxedInts(numbers2);

        Console.ReadLine();
    }

    public static void DisplayBoxedInts(IEnumerable<int> numbers)
    {
        var boxLine1 = "ooooooo ";
        var boxLine2 = "o     o ";
        var boxLine3 = "o  {0}  o ";
        var boxLine4 = "o     o ";
        var boxLine5 = "ooooooo ";

        var count = numbers.Count();

        var multiBoxLine1 = string.Empty;
        var multiBoxLine2 = string.Empty;
        var multiBoxLine3 = string.Empty;
        var multiBoxLine4 = string.Empty;
        var multiBoxLine5 = string.Empty;

        foreach (var num in numbers)
        {
            multiBoxLine1 += boxLine1;
            multiBoxLine2 += boxLine2;
            multiBoxLine3 += string.Format(boxLine3, num);
            multiBoxLine4 += boxLine4;
            multiBoxLine5 += boxLine5;
        }

        Console.WriteLine(multiBoxLine1);
        Console.WriteLine(multiBoxLine2);
        Console.WriteLine(multiBoxLine3);
        Console.WriteLine(multiBoxLine4);
        Console.WriteLine(multiBoxLine5);
    }
}

结果与您的相似:

enter image description here

但请注意,此解决方案适用于单个整数。如果它们开始变大,你必须考虑更好地对齐盒子的两侧。也许在框的内容与其边之间添加\t