Есть ли ограничения на вывод окна консоли?

Код:
Эта программа проверяет, делятся ли введенные 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, заметная часть в верхней части окна обрезается:

highNum = 89:
highNum на 89

highNum = 90:
highNum на 90

Это отрезало 6 строк только с этим небольшим прыжком, и я не уверен почему.

Вопрос:
Мое лучшее предположение состоит в том, что должно быть некоторое ограничение на вывод, который может отображаться в окне консоли. Это правильно, или что-то еще вызывает эту проблему?

3 ответа

Решение

В окне консоли щелкните по умолчанию

Это открывает диалоговое окно, которое позволяет вам установить размер буфера прокрутки (максимальное количество строк для сохранения) по умолчанию во всех ваших окнах консоли.

На моем скриншоте он установлен на 9000, потому что я часто регистрирую вывод на консоль, и иногда мне нужно прокручивать путь назад.

Вы также можете изменить его из своей программы для консоли, в которой он запущен, используя Console.SetBufferSize ().

Да, консоль имеет ограничение по ширине и высоте. И вы можете изменить это:

Высота экрана

Ответ изменен с того, что приведено здесь на веб-сайте Microsoft:

  • Щелкните в верхнем левом углу окна командной строки, а затем нажмите "Свойства".
  • Перейдите на вкладку "Макет".
  • В поле Размер буфера введите или выберите 2500 в поле Высота.
  • Сохраните реквизиты, нажав ОК.

У вас просто маленький буфер.

Другие вопросы по тегам