Console Window 的输出是否有限制?
Is there a limit on the output of Console Window?
代码:
此程序检查输入的 2 个数字及其总和是否可以被数字 2 - 9 整除,并显示剩余的可整除数字(不包括正在审查的数字)。
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);
}
}
问题:
我发现当我将范围 (highNum) 设置为超过 89 时,window 顶部的明显部分被截断:
highNum = 89:
highNum = 90:
仅是那个小跳跃就切断了 6 行,我不确定为什么。
问题:
我最好的猜测是控制台可以显示的输出一定有一些限制 Window。这是正确的,还是其他原因导致了这个问题?
在控制台 window 中,单击默认值
这会打开一个对话框,允许您在所有控制台中默认设置回滚缓冲区大小(要保留的最大行数)windows。
在我的屏幕截图中,它设置为 9000,因为我经常将输出记录到控制台,有时需要能够向后滚动。
您也可以从您的程序修改它,以便在使用 Console.SetBufferSize() 时使用 运行 的控制台。
根据给出的内容修改答案 here on microsoft's website:
- 单击命令提示符 window 的左上角,然后单击“属性”。
- 单击布局选项卡。
- 在屏幕缓冲区大小中,键入或 select 2500 高度。
- 按确定保存道具。
你的缓冲区很小。
是的,控制台有宽度和高度限制。您可以更改它:
代码:
此程序检查输入的 2 个数字及其总和是否可以被数字 2 - 9 整除,并显示剩余的可整除数字(不包括正在审查的数字)。
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);
}
}
问题:
我发现当我将范围 (highNum) 设置为超过 89 时,window 顶部的明显部分被截断:
highNum = 89:
highNum = 90:
仅是那个小跳跃就切断了 6 行,我不确定为什么。
问题:
我最好的猜测是控制台可以显示的输出一定有一些限制 Window。这是正确的,还是其他原因导致了这个问题?
在控制台 window 中,单击默认值
这会打开一个对话框,允许您在所有控制台中默认设置回滚缓冲区大小(要保留的最大行数)windows。
在我的屏幕截图中,它设置为 9000,因为我经常将输出记录到控制台,有时需要能够向后滚动。
您也可以从您的程序修改它,以便在使用 Console.SetBufferSize() 时使用 运行 的控制台。
根据给出的内容修改答案 here on microsoft's website:
- 单击命令提示符 window 的左上角,然后单击“属性”。
- 单击布局选项卡。
- 在屏幕缓冲区大小中,键入或 select 2500 高度。
- 按确定保存道具。
你的缓冲区很小。
是的,控制台有宽度和高度限制。您可以更改它: