0

我注意到当输出超过 498 的 [x] 个数字时,我的控制台窗口不会显示超过 500 的数字。我尝试了 for 循环的不同变体。我知道我可以将其转换为函数、类或实现结构,但我已经尝试过使用 ,甚至 foreach ,它仍然会跳过数字。所以我对此感到好奇,并决定最后发布一个问题。

代码是基本的:

        for (int i = 3; i < 1001 ; i+=3)
        {

            if (i > 0 && i < 200)
            {
                Console.WriteLine(i);

            }

            if (i > 200 && i < 400)
            {
                Console.WriteLine(i);
            }

            if (i > 400 && i < 600)
            {
                Console.WriteLine(i);
            }
            if (i > 600 && i < 800)
            {
                Console.WriteLine(i);
            }
            if (i > 800 && i < 1000)
            {
                Console.WriteLine(i);
            }

        }

        Console.ReadKey();
4

4 回答 4

1

控制台具有可以显示的最大行数。这是它的“缓冲区”大小。如果在缓冲区已满时写入新行,则删除“最旧”行。

您可以看到缓冲区大小正在使用:

Console.BufferHeight

缓冲区的大小将取决于正在使用的特定 shell 程序以及它的设置。

您可以使用:

Console.SetBufferSize

设置缓冲区大小,但即使这样也只能设置这么大。

如果您需要查看太大而无法通过控制台有效查看的输出,请考虑将数据写入文件而不是(或除此之外)将其写入控制台。

于 2013-11-12T18:03:34.080 回答
0

听起来你想要这个...

        for (int i = 3; i < 1001; i ++)
        {

            if (i % 3 == 0)
            {
                Console.WriteLine(i);
            }
        }

        Console.ReadKey();

'%' 运算符是模数...它返回除以 3 后的余数。

于 2013-11-12T17:29:36.520 回答
0

为了简化您的代码并在控制台窗口上拟合结果集,请尝试以下操作:

for(int i=3; i<1000; i+=3)
{
   Console.Write(i + ", ");
}
于 2013-11-12T17:51:46.693 回答
0

您的问题是在前几行开始消失之前控制台可以输出多少行。控制台只能容纳一定数量的行。我们可以像这样确定控制台可以容纳多少行:

for(int i = 0; i < 500; i++)
{
    Console.WriteLine(i);
}

这会产生输出:201 202 ... 498 499

我们可以得出结论,控制台可以容纳 499 - 201 行 = 298 + 1 = 299 行。

因此,在写入 299 行之后,将删除最旧的行,并添加最新的行。如果您想实际查看每一行,您可以在每打印 299 行之后放置 Console.ReadLine()。

for(int i = 0; i < 500; i++)
{
    Console.WriteLine(i);
    if(299 % i == 0)
    {
        Console.ReadLine();
    }
}

或者,简单地使用 Console.Write(i+ " "),避免使用新行。

附言

您看到的是 102 105 .. 996 999

999 - 102 = 897

897/3 = 299

于 2013-11-12T17:53:41.233 回答