Как выровнять 2d массив с массивом строк сверху и сбоку массива

#c# #arrays #console #text-alignment

Вопрос:

У меня есть этот 2d массив, который я пытаюсь распечатать с названиями штатов США сверху и слева от массива:

отпечатки, подобные этому:

введите описание изображения здесь

У меня есть этот метод печати

 public void ShowArray()
{
    for (int i = 0; i < v.Length; i  )
    {
        Console.Write("t"   v[i]);
    }

    Console.WriteLine();

    for (int i = 0; i < array.GetLength(0); i  )
    {
        Console.Write(v[i]   "t");

        for (int j = 0; j < array.GetLength(1); j  )
        {
            Console.Write(array[i,j]  "t");
        }

        Console.WriteLine();
    }
}
 

Ответ №1:

Падрайт/ПадЛефт FTW:

 private static string[] v = new string[] { "Maine", "California", "Texas" };
private static string[,] array = new string[,]
{
    { "0", "90", "0" },
    { "90", "0", "100" },
    { "0", "0", "0" },
};

public static void ShowArray()
{
    var maxLength = v.Max(s => s.Length); // <- NEW

    for (int i = 0; i < v.Length; i  )
    {
        Console.Write("t"   v[i].PadLeft(maxLength));
    }

    Console.WriteLine();

    for (int i = 0; i < array.GetLength(0); i  )
    {
        Console.Write(v[i].PadRight(maxLength)   "t");

        for (int j = 0; j < array.GetLength(1); j  )
        {
            Console.Write(array[i, j].PadRight(maxLength)   "t");
        }

        Console.WriteLine();
    }
}
 

выход:

              Maine      California           Texas
Maine           0               90              0
California      90              0               100
Texas           0               0               0