我如何显示2D数组的表?

时间:2013-11-25 00:20:03

标签: c# arrays multidimensional-array console

我需要填充数组并将该数组显示到控制台(以表格格式)。

这是我到目前为止所做的:

    static void Main()
    {
        //Declare variables, strings and constants.

        const int ROWS = 10;
        const int COLS = 5;
        const int MIN = 1;
        const int MAX = 100;
        int total = 0;

        int[,] numbers = new int[ROWS, COLS];
        Random rand = new Random();

        //Populate the array

        for (int r = 0; r < ROWS; ++r)
        {
            for (int c = 0; c < COLS; ++c)
            {
                numbers[r, c] = rand.Next(MIN, MAX + 1);                    
            }
        }

        //Display the array to console (table format)

        for (int r = 0; r < numbers.GetLength(0); ++r)
        {
            for (int c = 0; c < numbers.GetLength(1); ++c)
            {
                Console.Write("{0,6} ", numbers[r, c]);
                if (c % 5 == 0) Console.WriteLine();

            }
        }

当我这样做时,我的显示器如果偏离1并且没有正确对齐10x5表。

2 个答案:

答案 0 :(得分:0)

这是因为你的下一行:

if (c%5 == 0) Console.WriteLine();

请注意,第一个输出r = 0,c = 0,因此它会打印一个新行

答案 1 :(得分:0)

您可以检查列索引加一,c + 1是否等于给定的列数COLS,然后写一个新行:

if (c + 1 == COLS) Console.WriteLine();

另一种方法是在打印所有列后打印新行:

for (int r = 0; r < numbers.GetLength(0); ++r)
{
    for (int c = 0; c < numbers.GetLength(1); ++c)
    {
        Console.Write("{0,6} ", numbers[r, c]);
    }
    Console.WriteLine();
}