我想知道,我正在制作一个计算器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,这是主要困难的来源。
答案 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);
}
}
结果与您的相似:
但请注意,此解决方案适用于单个整数。如果它们开始变大,你必须考虑更好地对齐盒子的两侧。也许在框的内容与其边之间添加\t
。