c# - 为什么控制台窗口中的第一列保持为空

问题描述

我正在运行一个简单的代码来打印从 100 到 1 的数字:

for (int i = 100; i > 0; i--)
{
   Console.Write(i + "\t");
}

在控制台窗口中,第一行打印得很好。但其他行不是从行首开始。(100 下的列保持为空)

这是我得到的结果的图片。我怎样才能解决这个问题? my result

解决方法

如果您想要一个关于如何检查控制台大小的简单示例,Console.WindowWidth 是一个很好的起点。然后你只需要计算可以拟合多少列(numCols),你写了多少条数据(n),你就可以开始了。

// Current window width in characters
int w = Console.WindowWidth;
int tabSize = 8;
int numCols = w / tabSize;

for (int i = 100,n = 0; i > 0; i--,n++)
{
    if (n == 0)
    {
        // First element,do nothing
    }
    else if (n % numCols == 0)
    {
        // Written numCols elements,go to new line
        Console.WriteLine();
    }
    else
    {
        // Simply add tab
        Console.Write("\t");
    }

    Console.Write(i);
}

Console.WriteLine();