Вставка очень большого массива целых чисел в качестве стандартного ввода

#c#

#c#

Вопрос:

Я хочу иметь возможность вставлять array из integer в качестве стандартного ввода, который может иметь длину 1000000. Я пытаюсь сделать это, используя этот код, но размер array будет только 254, (я прочитал из статьи, которая консоль.Строка чтения занимает всего 254 символа).

Примечание: каждый символ array находится между 1 to 6 и первая строка кода numThrows представляет length собой массив.

  int numThrows = Convert.ToInt32(Console.ReadLine()); // length of array
 string str = Console.ReadLine();
 int[] arr = new int[numThrows];
 arr = str.Select(c => Convert.ToInt32(c.ToString())).ToArray();
 

Комментарии:

1. Консоль. setIn() . Что будет представлять содержимое этого массива? Как вы планируете его вводить? Вставка чего- то ?

2. этот массив представляет броски кости, поскольку каждая цифра будет от 1 до 6, я планирую создать массив из миллионов цифр, чтобы попробовать его.

3. вы можете прочитать его из файла, генерируя их случайным образом в своем коде… как вы должны записывать все 10000 целые числа в CMD… :/

4. Я знаю, это кажется странным, но это домашнее задание для колледжа, и они говорят, что оно будет протестировано с массивом, содержащим миллион цифр, и это было предложено решить с помощью стандартного ввода и вывода

5. «Я прочитал из статьи, что консоль. Строка чтения занимает всего 254 символа» — Хм, я только что протестировал это. Это означает, что я могу прочитать более 1000000 символов одним ReadLine() . Где вы это прочитали?

Ответ №1:

Вы можете увеличить лимит, написав свою собственную функцию ReadLine .

         const int BufferLimit = 10000;
        public static string ReadLine()
        {
            Stream s = Console.OpenStandardInput(BufferLimit);
            byte[] Buffer = new byte[BufferLimit];
            int Length = s.Read(Buffer, 0, BufferLimit);
            return new string(Encoding.UTF7.GetChars(Buffer, 0, Length));
        }