Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 控制台窗口的输出是否有限制?_C#_Windows Console - Fatal编程技术网

C# 控制台窗口的输出是否有限制?

C# 控制台窗口的输出是否有限制?,c#,windows-console,C#,Windows Console,代码: 此程序检查输入的2个数字及其总和是否可被数字2-9整除,并显示剩余的可整除数字(不包括正在查看的数字) static void Main(字符串[]args) { 对于(int i=2;ix%Divisor==0).ToList(); //使用布尔值确定输出。 if(总和可除| | num1可除| | num2可除) { if(可积) { WriteLine(“总和({0})可被{1}整除!\n{1}的剩余可用数字是:\n”,总和,除数); OutputListExceptin(Numb

代码:
此程序检查输入的2个数字及其总和是否可被数字2-9整除,并显示剩余的可整除数字(不包括正在查看的数字)

static void Main(字符串[]args)
{
对于(int i=2;i<10;i++)
{
挑战(2,6,i);
}
Console.ReadLine();
}
静态无效挑战(int num1、int num2、int除数)
{
整数和=num1+num2;
bool SumDivisible=总和%除数==0;
bool num1可除数=num1%除数==0;
bool num2可除数=num2%除数==0;
int-highNum=80;
List NumbersDivisible=Enumerable.Range(1,highNum).Where(x=>x%Divisor==0).ToList();
//使用布尔值确定输出。
if(总和可除| | num1可除| | num2可除)
{
if(可积)
{
WriteLine(“总和({0})可被{1}整除!\n{1}的剩余可用数字是:\n”,总和,除数);
OutputListExceptin(NumbersDivisible,sum);
//输出
Console.WriteLine(“\n\n”);
}
if(num1可除)
{
WriteLine(“第一个数字({0})可被{1}整除!\n{1}的剩余可用数字是:\n”,num1,除数);
OutputListExceptin(NumbersDivisible,num1);
//输出
Console.WriteLine(“\n\n”);
}
if(num2可除)
{
WriteLine(“第二个数字({0})可被{1}整除!\n{1}的剩余可用数字是:\n”,num2,除数);
OutputListExceptin(NumbersDivisible,num2);
//输出
Console.WriteLine(“\n\n”);
}
}
其他的
{
WriteLine(“所选的数字及其总和不能被{0}整除。\n{0}的可用数字是:\n”,除数);
OutputListExceptin(数字可除);
Console.WriteLine(“\n\n”);
}
}
公共静态void outputListExceptInt(列表编号DivisibleByDivisor,int except=0)
{
var Numbers=except>0?NumbersDivisibleByDivisor。其中(x=>x!=except):NumbersDivisibleByDivisor;
foreach(整数)
{
控制台写入线(num);
}
}
问题:
我发现,当我将范围(highNum)设置为89以上时,窗口顶部的一个明显部分被切断:

highNum=89:

highNum=90:

仅仅是一个小小的跳跃就切断了6条线,我不知道为什么

问题:

我的最佳猜测是,控制台窗口显示的输出必须有一定的限制。这是正确的,还是其他原因导致了此问题?

在控制台窗口中,单击默认值

这将打开一个对话框,允许您在所有控制台窗口中默认设置回滚缓冲区大小(要保留的最大行数)

在我的屏幕截图中,它被设置为9000,因为我经常将输出记录到控制台,有时需要能够向后滚动


您还可以从程序中为正在运行的控制台修改它。

根据给定内容修改答案:

  • 单击命令提示窗口的左上角,然后单击“属性”
  • 单击布局选项卡
  • 在屏幕缓冲区大小中,键入或选择高度2500
  • 按OK保存道具

您的缓冲区很小。

是的,控制台有宽度和高度限制。您可以更改它:


在您的窗口alt space p中,转到布局并更改屏幕缓冲区大小,这是当您向上滚动时控制台将有多少行。Windows控制台总是有一个可以更改的限制,例如通过命令行窗口的选项。但是,如果要保留文本,请将其写入文件。当显示太多结果时,您不能依赖用户将其设置得足够大以适合您的应用程序:使用
Write
而不是
WriteLine
(使用一些填充,例如
num.ToString().PadLeft(10,'0')
)或分页输出(每40次输出后等待按键)。我认为默认缓冲区高度为300。您可以使用Console.SetBufferSize(…)和Console.setWindowsSize(…)@Sinatr调整缓冲区和窗口大小。我很欣赏C#fix。Write可以让我自己达到highNum 95。稍后我将按照您的建议实现分页功能。只希望你提交了你的答案……接受@Eric J.的答案而不是你的答案,因为它提供了额外的C#修复。不过我还是很感激你的帮助!谢谢我正在使用Console.SetBufferSize()方法,因为我希望它特定于我的程序。这对我来说特别有用(其中highNum=100):Console.SetBufferSize(Console.BufferHeight,400);
static void Main(string[] args)
{
    for (int i = 2; i < 10; i++)
    {
        Challenge(2, 6, i);
    }
    Console.ReadLine();
}

static void Challenge(int num1, int num2, int Divisor)
{
    int sum = num1 + num2;
    bool SumDivisible = sum % Divisor == 0;
    bool num1Divisible = num1 % Divisor == 0;
    bool num2Divisible = num2 % Divisor == 0;

    int highNum = 80;
    List<int> NumbersDivisible = Enumerable.Range(1, highNum).Where(x => x % Divisor == 0).ToList();

    // Use the booleans to determine output.
    if (SumDivisible || num1Divisible || num2Divisible)
    {
        if (SumDivisible)
        {
            Console.WriteLine("The SUM ({0}) is divisible by {1}! \nThe remaining USABLE numbers for {1} are:\n", sum, Divisor);
            outputListExceptInt(NumbersDivisible, sum);
            //output
            Console.WriteLine("\n\n");
        }
        if (num1Divisible)
        {
            Console.WriteLine("The FIRST number ({0}) is divisible by {1}! \nThe remaining USABLE numbers for {1} are:\n", num1, Divisor);
            outputListExceptInt(NumbersDivisible, num1);
            //output
            Console.WriteLine("\n\n");
        }

        if (num2Divisible)
        {
            Console.WriteLine("The SECOND number ({0}) is divisible by {1}! \nThe remaining USABLE numbers for {1} are:\n", num2, Divisor);
            outputListExceptInt(NumbersDivisible, num2);
            //output
            Console.WriteLine("\n\n");
        }
    }
    else
    {
        Console.WriteLine("The NUMBERS chosen and their SUM are not divisble by {0}. \nThe USABLE numbers for {0} are:\n", Divisor);
        outputListExceptInt(NumbersDivisible);
        Console.WriteLine("\n\n");
    }
}

public static void outputListExceptInt(List<int> NumbersDivisibleByDivisor, int except = 0)
{
    var Numbers = except > 0 ? NumbersDivisibleByDivisor.Where(x => x != except) : NumbersDivisibleByDivisor;
    foreach (int num in Numbers)
    {
        Console.WriteLine(num);
    }
}