【问题标题】:Why does this nested loop output starts at 8 and 18?为什么这个嵌套循环输出从 8 和 18 开始?
【发布时间】:2018-04-30 14:44:36
【问题描述】:

我不明白为什么这个循环在输出时从 8 和 18 开始,但是当我尝试“i

class Program
{
    static void Main(string[] args)
    {
        for (int i = 2; i < 100; i++)
        {
            for (int j = 2; j < 100; j++)
            {
                Console.WriteLine("i = {0} and j = {1}", i, j);
            }                 
        }
    }
}

我的问题的屏幕截图:

【问题讨论】:

  • 这些循环“从”2 和 2 开始。不清楚您要描述什么问题。
  • 您能否澄清您关于“何时输出”的问题:如果您有第二个无法使用的代码版本,请分享一下?
  • 也许与某人核实并尝试回答他的问题 - How many fingers am I holding up? :)

标签: c# console-application


【解决方案1】:

这是因为您超出了控制台设置的一次显示的行数。

该属性名为Console.BufferHeight

尝试编写Console.WriteLine(Console.BufferHeight); 以查看您的控制台设置为一次显示的行数。

您可以简单地通过将其设置为您想要的值来更改它,例如Console.BufferHeight = 20000; 或通过@Greg 详述的方式访问属性来更改控制台的设置。

【讨论】:

    【解决方案2】:

    您确定它不是从i = 2j = 2 开始的吗?您运行此循环的次数如此之多,以至于您的控制台输出可能不会显示它从 2,2 开始,即使它确实如此。尝试在第二个 for 循环中设置断点,我想你会看到它从 2、2 开始。那是因为缓冲区太小了。

    您可以这样做:

    • 运行您的项目。
    • 右击标题栏->属性->布局。
    • 将您的身高设置为非常大的高度。

    您可以参考this question了解更多。

    【讨论】:

    • 虽然我认为您可能对他们造成混淆的原因是正确的,但这可能应该是评论而不是答案。
    • 我没有评论的声誉。
    • 你是对的,如果我设置一个断点,它会显示 2 和 2。知道为什么会这样吗?我正在使用最新版本的 Visual Studio 社区。这是正常的还是只是一个错误?非常感谢。
    • 缓冲区太小。运行你的项目。右键单击标题栏->属性->布局。将您的高度设置为非常大的高度。这可能会有所帮助。 (见:*.com/questions/34160977/…